Suche senden
Hochladen
イマドキの現場で使えるJavaライブラリ事情
•
61 gefällt mir
•
24,827 views
T
takezoe
Folgen
2012/09/26(Wed) JJUG Night Seminar at Oracle Japan, Tokyo
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 38
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Styled Components & React.js
Styled Components & React.js
Grayson Hicks
JSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方について
Aya Ebata
Java EE 8新機能解説 -Bean Validation 2.0編-
Java EE 8新機能解説 -Bean Validation 2.0編-
Masatoshi Tada
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
TypeScriptのdecoratorについて
TypeScriptのdecoratorについて
tak
Session管理とRailsのcookie store
Session管理とRailsのcookie store
Kamimura Taichi
いまさら聞けないJSONPのまとめ
いまさら聞けないJSONPのまとめ
Yujiro Araki
Empfohlen
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
Styled Components & React.js
Styled Components & React.js
Grayson Hicks
JSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方について
Aya Ebata
Java EE 8新機能解説 -Bean Validation 2.0編-
Java EE 8新機能解説 -Bean Validation 2.0編-
Masatoshi Tada
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
TypeScriptのdecoratorについて
TypeScriptのdecoratorについて
tak
Session管理とRailsのcookie store
Session管理とRailsのcookie store
Kamimura Taichi
いまさら聞けないJSONPのまとめ
いまさら聞けないJSONPのまとめ
Yujiro Araki
WHOIS教室 〜 JPOPM36 20190621
WHOIS教室 〜 JPOPM36 20190621
Akira Nakagawa
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Y Watanabe
Web development using javaScript, React js, Node js, HTML, CSS and SQL
Web development using javaScript, React js, Node js, HTML, CSS and SQL
Jayant Surana
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
Masatoshi Tada
Vue.js for beginners
Vue.js for beginners
Julio Bitencourt
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
The java interview questions ebook - confused coders
The java interview questions ebook - confused coders
Yash Sharma
reactJS
reactJS
Syam Santhosh
What's new in Visual Studio 2022
What's new in Visual Studio 2022
Muralidharan Deenathayalan
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
真行 八田
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
PHPの戻り値型宣言でselfを使ってみよう
PHPの戻り値型宣言でselfを使ってみよう
DQNEO
それPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudy
晃 遠山
"Native" Apps with APEX and PhoneGap
"Native" Apps with APEX and PhoneGap
Christian Rokitta
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
Yoshitaka Kawashima
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
一希 大田
ドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かう
増田 亨
レガシーコード改善のススメ
レガシーコード改善のススメ
Akira Hirasawa
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おう
kitfactory
Apache Torqueについて
Apache Torqueについて
tako pons
明日から使える Java SE 7
明日から使える Java SE 7
Yuichi Sakuraba
Weitere ähnliche Inhalte
Was ist angesagt?
WHOIS教室 〜 JPOPM36 20190621
WHOIS教室 〜 JPOPM36 20190621
Akira Nakagawa
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Y Watanabe
Web development using javaScript, React js, Node js, HTML, CSS and SQL
Web development using javaScript, React js, Node js, HTML, CSS and SQL
Jayant Surana
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
Masatoshi Tada
Vue.js for beginners
Vue.js for beginners
Julio Bitencourt
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
apkiban
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
土岐 孝平
The java interview questions ebook - confused coders
The java interview questions ebook - confused coders
Yash Sharma
reactJS
reactJS
Syam Santhosh
What's new in Visual Studio 2022
What's new in Visual Studio 2022
Muralidharan Deenathayalan
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
真行 八田
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
PHPの戻り値型宣言でselfを使ってみよう
PHPの戻り値型宣言でselfを使ってみよう
DQNEO
それPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudy
晃 遠山
"Native" Apps with APEX and PhoneGap
"Native" Apps with APEX and PhoneGap
Christian Rokitta
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
Yoshitaka Kawashima
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
一希 大田
ドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かう
増田 亨
レガシーコード改善のススメ
レガシーコード改善のススメ
Akira Hirasawa
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おう
kitfactory
Was ist angesagt?
(20)
WHOIS教室 〜 JPOPM36 20190621
WHOIS教室 〜 JPOPM36 20190621
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Web development using javaScript, React js, Node js, HTML, CSS and SQL
Web development using javaScript, React js, Node js, HTML, CSS and SQL
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
Vue.js for beginners
Vue.js for beginners
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
GraalVM の概要と、Native Image 化によるSpring Boot 爆速化の夢
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
The java interview questions ebook - confused coders
The java interview questions ebook - confused coders
reactJS
reactJS
What's new in Visual Studio 2022
What's new in Visual Studio 2022
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
Mavenの真実とウソ
Mavenの真実とウソ
PHPの戻り値型宣言でselfを使ってみよう
PHPの戻り値型宣言でselfを使ってみよう
それPhpStormで出来るよ #phpstudy
それPhpStormで出来るよ #phpstudy
"Native" Apps with APEX and PhoneGap
"Native" Apps with APEX and PhoneGap
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
【17-E-4】 未来はどこにいても誰にでも平等にある。 未来を創るのは自分自身だ。 ~SIerの中で生きるということ~
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
.NET 7 での ASP.NET Core Blazor の新機能ピックアップ
ドメイン駆動設計 複雑さに立ち向かう
ドメイン駆動設計 複雑さに立ち向かう
レガシーコード改善のススメ
レガシーコード改善のススメ
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おう
Ähnlich wie イマドキの現場で使えるJavaライブラリ事情
Apache Torqueについて
Apache Torqueについて
tako pons
明日から使える Java SE 7
明日から使える Java SE 7
Yuichi Sakuraba
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Hiroshi Ito
Scala EE 7 Essentials
Scala EE 7 Essentials
tnoda
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
takezoe
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
Springでdao 20070413
Springでdao 20070413
Funato Takashi
Scala on Hadoop
Scala on Hadoop
Shinji Tanaka
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
Ryo RKTM
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
Cubby 2006-08-23
Cubby 2006-08-23
Agata Toshikata
scala-kaigi1-sbt
scala-kaigi1-sbt
Kenji Yoshida
R5 3 type annotation
R5 3 type annotation
EIICHI KIMURA
Antのススメ
Antのススメ
Tatsumi Naganuma
TDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
Nobuhiro Sue
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Yu Nobuoka
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Tasuku Otani
React Native GUIDE
React Native GUIDE
dcubeio
AWS SDK for Haskell開発
AWS SDK for Haskell開発
Nomura Yusuke
Ähnlich wie イマドキの現場で使えるJavaライブラリ事情
(20)
Apache Torqueについて
Apache Torqueについて
明日から使える Java SE 7
明日から使える Java SE 7
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Scala EE 7 Essentials
Scala EE 7 Essentials
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Springでdao 20070413
Springでdao 20070413
Scala on Hadoop
Scala on Hadoop
Play framework 2.0のちょっとした紹介
Play framework 2.0のちょっとした紹介
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Cubby 2006-08-23
Cubby 2006-08-23
scala-kaigi1-sbt
scala-kaigi1-sbt
R5 3 type annotation
R5 3 type annotation
Antのススメ
Antのススメ
TDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
React Native GUIDE
React Native GUIDE
AWS SDK for Haskell開発
AWS SDK for Haskell開発
Mehr von takezoe
Journey of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The Cloud
takezoe
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scala
takezoe
Testing Distributed Query Engine as a Service
Testing Distributed Query Engine as a Service
takezoe
Revisit Dependency Injection in scala
Revisit Dependency Injection in scala
takezoe
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
takezoe
頑張りすぎないScala
頑張りすぎないScala
takezoe
GitBucket: Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scala
takezoe
Non-Functional Programming in Scala
Non-Functional Programming in Scala
takezoe
Scala警察のすすめ
Scala警察のすすめ
takezoe
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」
takezoe
The best of AltJava is Xtend
The best of AltJava is Xtend
takezoe
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
Tracing Microservices with Zipkin
Tracing Microservices with Zipkin
takezoe
Type-safe front-end development with Scala
Type-safe front-end development with Scala
takezoe
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016
takezoe
Macro in Scala
Macro in Scala
takezoe
Java9 and Project Jigsaw
Java9 and Project Jigsaw
takezoe
Reactive database access with Slick3
Reactive database access with Slick3
takezoe
markedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVM
takezoe
ネタじゃないScala.js
ネタじゃないScala.js
takezoe
Mehr von takezoe
(20)
Journey of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The Cloud
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scala
Testing Distributed Query Engine as a Service
Testing Distributed Query Engine as a Service
Revisit Dependency Injection in scala
Revisit Dependency Injection in scala
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
頑張りすぎないScala
頑張りすぎないScala
GitBucket: Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scala
Non-Functional Programming in Scala
Non-Functional Programming in Scala
Scala警察のすすめ
Scala警察のすすめ
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」
The best of AltJava is Xtend
The best of AltJava is Xtend
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
Tracing Microservices with Zipkin
Tracing Microservices with Zipkin
Type-safe front-end development with Scala
Type-safe front-end development with Scala
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016
Macro in Scala
Macro in Scala
Java9 and Project Jigsaw
Java9 and Project Jigsaw
Reactive database access with Slick3
Reactive database access with Slick3
markedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVM
ネタじゃないScala.js
ネタじゃないScala.js
イマドキの現場で使えるJavaライブラリ事情
1.
イマドキの現場で使える Javaライブラリ事情 NTTデータ先端技術 竹添
直樹 @takezoen
2.
自己紹介 竹添 直樹
NTTデータ先端技術 Scala、アジャイル オープンソース Project Amateras The Seasar Project Apache Click 執筆 イマドキのIDE事情(マイナビニュース) Seasar2徹底入門(翔泳社)
3.
Scala逆引きレシピ
竹添直樹 / 島本多可子 出版社 :翔泳社 発売 :2011/7/3 ページ数 :632ページ 価格 :¥3,360 「仕事でScalaを使う」 「仕事で を使う」ことを前提としたレシピ集 を使う」 Scalaの基礎からユニットテスト、Play2、Akkaなどの フレームワークやビルドツールsbtまでカバー Scala = Javaよりも安全 + LLのように簡潔な記述
4.
現場で使えるJavaライブラリ
竹添直樹 / 島本多可子 / 小津美夕紀 / 亀井隆司 出版社 :翔泳社 発売 :2011/7/16 ページ数 :624ページ 価格 :¥3,780 の定番・実用(+ちょっと面白) の定番・実用( ちょっと面白)Javaライブラリを紹介! 全73の定番・実用( ちょっと面白) ライブラリを紹介! Commons Lang、ICU4J、Commons IO、Joda Time、Holiday.java、Commons Compress、Commons Codec、 Commons Configuration、Commons BeanUtils、S2Util、Guava、fastutil、log4j、Commons Logging、log5j、 Logback、SLF4J、log4jdbc、Velocity、FreeMarker、JSTL、Java Standard EL Functions、Commons FileUpload、 Url Rewrite Filter、SiteMesh、Kaptcha、HSQLDB、H2、Commons DbUtils、SX-DbUtils、Persist、Mirage、dom4j、 Commons JXPath、ROME、NekoHTML、HttpClient、Commons Net、JSch、Commons Email、JAX-WS、 Super CSV、POI、XLSBeans、jXLS、Jacob、iText、JasperReports、JODReports、JODCOnverter、JFreeChart、 charts4j、QRCode for Java、JSONIC、MessagePack、JAXB、XStream、Mockito、JMockit、DBUnit、Mockrunner、 Selenium、Ehcache、Java Memcached Client、jmemcached、Rhino、MVEL、Guice、OVal、Drools、args4j、 Quartz、Javassist
5.
執筆の経緯 Javaには膨大なOSSライブラリが存在する 言語やフレームワークの本は出ているけどライブラリの本
や記事は最近みかけない ずっとJavaをやってきた人には当たり前だけど、新しい Javaプログラマの人はどれを使っていいかわからない 定番のJavaライブラリのカタログ的な 書籍があるとよいのでは?
6.
発売から一年 執筆時はJDK 1.4でも利用できるものが多かったが、
JDK 1.5以降への対応が進んだ Githubで開発されているものが増えてきた ロギングライブラリはLog4jからLogback / SLF4Jが主 流に SeleniumやDroolsなど活発に開発が行われているもの もあるが、大部分のライブラリはメンテナンスフェーズに 入っている ASFで開発されているもの、企業がバックについている ものは継続的にメンテナンスが行われている Javaでは定番のライブラリやフレームワークが完全に 確立している状態
7.
というわけで 書籍では取り上げることができなかった便 利なライブラリを紹介します。
8.
JSONライブラリ 書籍で紹介したJSONIC以外にもいくつか の選択肢があります
Jackson http://jackson.codehaus.org/ Gson http://code.google.com/p/google-gson/ JsonPullParser https://github.com/vvakame/JsonPullParser
9.
JSONライブラリの性能比較
50000回の変換結果(ミリ秒) JSON Pull Parserは単純なList、Mapを使用でき ないため、代わりにライブラリが提供している JsonArray、JsonHashを使用 FROM TO JSONIC Jackson gson JPP List<String> JSON 32.2 35 50.4 380.3 Map<String,String> JSON 55.7 37.9 58.3 783.5 List<SampleBean> JSON 487.5 210.5 598.9 6930 Map<String,SampleBean> JSON 482.8 205.7 609.5 - JSON List<String> 59.5 25.7 23.4 34.7 JSON Map<String,String> 110.3 133.6 42.4 76.7 JSON List<SampleBean> 1769.4 238.4 369.2 547.6 JSON Map<String,SampleBean> 1829 364.5 397.5 -
10.
各JSONライブラリの性能特性 Jacksonがシリアライズ、デシリアライズ共に安定して高速 Gsonはパースは高速だがシリアライズが遅め
JSONICは健闘しているが、JacksonやGsonには及ばな い。特にBeanへのデシリアライズが飛びぬけて遅い JsonPullParserは単純なパースは高速だがシリアライズ が遅い。使い勝手の面でもやや難がある 総合的にはJacksonがおすすめ
11.
Thymeleaf
http://www.thymeleaf.org/ XMLベースのテンプレートエンジン 特殊な属性を埋め込んだプレーンなXMLファイ ルをテンプレートとして使用可能 Tapestry、Mayaa、Wicket、Facelets等と同じ アプローチ 式言語にはOGNLを採用している Webアプリケーションで使用するための ResolverやContextが予め提供されている
12.
Thymeleafのサンプル
<html> <body> <ul th:if="${books.size()} gt 0"> <li th:each="book: ${books}"> <a th:href="${book.url}" th:text="${book.title}">title</a> </li> </ul> TemplateEngine engine = new TemplateEngine(); <div th:if="${books.size()} == 0"> engine.setTemplateResolver(new ClassLoaderTemplateResolver()); 書籍はありません。 </div> List<Book> books = new ArrayList<Book>(); </body> </html> Context context = new Context(); context.setVariable("books", books); String result = engine.process( "jp/sf/amateras/javalib/thymeleaf/ThymeleafSample.xhtml", context); <html xmlns="http://www.w3.org/1999/xhtml"> <body> <ul> <li><a shape="rect" href="http://www.amazon.co.jp/exec/obidos/ASIN/4798121509">Seasar2徹底入門</a></li> <li><a shape="rect" href="http://www.amazon.co.jp/exec/obidos/ASIN/4798123366">現場で使えるJavaライブラリ</a></li> <li><a shape="rect" href="http://www.amazon.co.jp/exec/obidos/ASIN/4798125415">Scala逆引きレシピ</a></li> </ul> </body> </html>
13.
Clione-SQL
http://code.google.com/p/clione-sql/ 軽量なDBアクセスライブラリ 実行可能なSQL(2waySQL)をテンプレートと して使用することができる S2Dao、S2JDBCなどの外出しSQLファイルと 同じアプローチ(ただし記法は違います) 行やインデントに意味を持たせることでテンプ レートをシンプルに記述できる パラメータの型に応じて自動的に演算子を置換 するなどの便利機能もあり ドキュメントが不足している
14.
Clione-SQLのサンプル
Connection conn = DriverManager.getConnection("jdbc:hsqldb:mem:.", "sa", ""); List<Book> books = sqlManager(conn) .useFile("jp/sf/amateras/javalib/clionesql/ClioneSQLSample.sql") .findAll(Book.class, params("publisher", "翔泳社").$("price", 3500) ); SELECT * FROM BOOKS WHERE PUBLISHER = /* $publisher */'TITLE' AND PRICE <= /* $price */10000 publisher=null、price=3500の場合: publisher=null、price=nullの場合: SELECT * FROM BOOKS WHERE SELECT * FROM BOOKS PRICE <= 3500 パラメータがnullの場合、行が削除される インデントされた行が全て削除されると (IF文などで分岐を記述する必要がない) 親の行が削除される
15.
RESTEasy
https://www.jboss.org/resteasy/ JBossで使用されているJAX-RS実装 非同期処理も可能 クライアントライブラリが便利
16.
RESTEasyのサンプル サービスのインターフェース(サーバサイドはこのインターフェースを実装して作成) @Path("hello") public
interface HelloService { @GET @Path("/{name}") @Produces("text/plain; charset=UTF-8") public String workd(@PathParam("name") String name); } クライアントからの呼び出し RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); // インターフェースからクライアントを動的に生成 HelloService hello = ProxyFactory.create(HelloService.class, "http://localhost:8080/sample"); String result = hello.world("Taro");
17.
Jsoup
http://jsoup.org/ HTML5対応のHTMLパーサ jQueryのようにCSSセレクタを使用して要素の選択を行う ことができる DOMの操作もjQuery風の流れるインターフェースで行うこ とができる Document doc = Jsoup.connect("http://d.hatena.ne.jp/takezoe/").get(); Elements headlines = doc.select("div.section h3"); for(int i=0; i < headlines.size(); i++){ Element e = headlines.get(i); System.out.println(e.text()); } 似たライブラリとしてjOOX(https://github.com/jOOQ/jOOX )がある こちらはXMLしか扱うことができないが、JavaのDOM APIとの相互運用が可能
18.
Zip4j
http://www.lingala.net/zip4j/ パスワード付きZIPファイルの生成・解凍が 可能なライブラリ Java標準のAPIやCommons Compressはパ スワード付きZIPファイルに非対応 他にもいくつかの選択肢があります http://code.google.com/p/winzipaes/ http://www.ne.jp/asahi/hishidama/home/tech/soft /java/zip.html
19.
Zip4jのサンプル // パラメータを準備
ZipParameters parameters = new ZipParameters(); parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); parameters.setEncryptFiles(true); parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES); parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256); parameters.setPassword("1234"); // zipファイルを作成してファイルを追加 ZipFile zipFile = new ZipFile("sample.zip"); zipFile.addFile(new File("contents/memo.txt"), parameters);
20.
jMagick
http://www.jmagick.org/ JavaからImageMagickを呼び出すための ラッパ サムネイルやデバイス毎にリサイズした画像の 作成などに便利 Java標準のAPIだと縮小時の画像品質が悪 かったり、メモリ消費が問題になったり 動作にはImageMagikが必要 JNI経由でImageMagickを呼び出すため、共 有ライブラリを配置する必要がある
21.
jMagickのサンプル MagickImage image
= new MagickImage(new ImageInfo("javalib.jpg")); // 画像のサイズを半分に縮小 int width = (int) image.getDimension().getWidth() / 2; int height = (int) image.getDimension().getHeight() / 2; MagickImage resized = image.scaleImage(width, height); resized.setFileName("javalib_mini.jpg"); resized.writeImage(new ImageInfo());
22.
Byteman
https://www.jboss.org/byteman javaagentを使用して任意のクラス、メソッド に処理を挿入する プログラムの動作を一時的に変えたり ログを出力するコードを埋め込んだり 例外を投げるコードを埋め込んで異常系のテス トを自動化したり BMUnitというJUnit4と組み合わせて使用する ためのモジュールも提供されている
23.
Bytemanのサンプル
ルールファイルの例 RULE Sample Rule CLASS jp.sf.amateras.javalib.byteman.BytemanSample どこにルールを 適用するか METHOD hello AT ENTRY ルールの実行条件 IF TRUE DO 挿入する処理 traceln($1) ENDRULE 起動時にjavaagentとルールファイルを指定 > java -javaagent:lib/byteman.jar=script:rule.btm jp.sf.amateras.javalib.byteman.BytemanSample
24.
jqPlot
http://www.jqplot.com/ JavaScriptでグラフを描画するjQueryプラ グイン Javaライブラリではありませんが、Javaライ ブラリの代替品ということで 棒グラフ、折れ線グラフ、円グラフ、バブル チャートなどを描画可能 ブラウザ上でグラフを描画するのでサーバ に負荷がかからない点がメリット
25.
jqPlotのサンプル <html> <head> <title>jqPlot</title> <script language="javascript" type="text/javascript"
src="jqplot/jquery.min.js"></script> <!--[if lt IE 9]> <script language="javascript" type="text/javascript" src="jqplot/excanvas.min.js"></script> <![endif]--> <script language="javascript" type="text/javascript" src="jqplot/jquery.jqplot.min.js"></script> <link rel="stylesheet" type="text/css" href="jqplot/jquery.jqplot.min.css" /> </head> <body> <div id="graph" style="height: 400; width: 600;"></div> <script> jQuery( function() { jQuery . jqplot( 'graph', [ [ [ 1, 20 ], [ 2, 100 ], [ 3, 10 ], [ 4, 30 ] ], [ [ 1, 50 ], [ 2, 80 ], [ 3, 30 ], [ 4, 80 ] ] ], { title: '折れ線グラフのサンプル' } ); } ); </script> </body> </html>
26.
JGit
http://www.eclipse.org/jgit/ JavaからGitにアクセスするためのライブラリ EGit(Eclipse用のGitプラグイン)で使用されており、現 在はEclipse Foundationで開発されている Pure Javaで実装されているため別途Gitをインストー ルする必要がない Antタスクとしても利用可能(一部のコマンドだけ?) Gitと連携していろいろな処理を自動化するのに使える かも?
27.
JGitのサンプル // リモートリポジトリをclone
Git.cloneRepository() .setURI("https://github.com/takezoe/solr-scala-client.git") .setDirectory(new File("git")) .call(); // ログを取得して表示 Iterable<RevCommit> logs = Git.open(new File("git")).log().call(); for(RevCommit rev: logs){ System.out.println(rev.getCommitterIdent().getEmailAddress() + " - " + rev.getCommitTime()); System.out.println(rev.getFullMessage()); System.out.println("--"); } // diffを表示 Git.open(new File("git")).diff().setOutputStream(System.out).call();
28.
執筆に関すること
29.
執筆環境 基本的にリモートで作業
4人での共著 はじめて全員で顔をあわせたのは執筆完了後 基本的に無料のツールを使用 原稿はOpenOfficeで執筆 MLはGoogleグループを使用 サンプルコード等はBitBucketで共有 PDFで校正 最近はWikiで原稿を書いています スマートフォン、WiMAXでいつでも・どこでも作業できる
30.
苦労したこと どこまで書くか?
全ての機能は書ききれない 基本的な部分+あまり情報がない部分 ライブラリのバグ、バージョンアップ HSQLDB Drools サイトがなくなっていたり、過去のバージョンの扱 いが微妙だったり java.netにホスティングされているプロジェクト SiteMesh
31.
技術書の難しいところ 出版までの時差
オンラインメディア、ブログ等に勝てない 情報の寿命 あまりに陳腐化の早いものは書籍には適さない
32.
書籍に適しているもの 最新情報よりもある程度固定化されたもの
技術的なものではなく、手法や考え方など読み 物として読めるもの すでに定番化している技術の入門・解説やリ ファレンス的なもの
33.
「現場で使えるJavaライブラリ」は これらの条件を満たしているはず!
34.
失敗したかも ライブラリ名で検索しても引っかからない
35.
別のアプローチもあります 執筆中の書籍をダウンロード販売
ManningのEarly Access Programが有名 完成版を購入するよりも安価 できている部分をPDFでダウンロードでき、アップデー トされると通知が届く 最終的にはデザインも入った完成版が提供される 著者、読者双方にメリット 最新情報を部分的にであってもいち早く読める 読者からのフィードバックを書籍に反映できる
36.
でも、完成しなかったらどうなるの? 完成しなかったら読者には返金されるの?
著者とはどういう契約になっているのだろう? 完成前に売れ行きの予想がついてしまう Early Access Programでの購入者が少なかっ たら著者のモチベーションダウンで執筆が遅れ るのでは?
37.
ご清聴ありがとうございました
大事なことなのでもう一度 「Scala逆引きレシピ」 逆引きレシピ」 好評発売中です!
38.
サンプルコード 今日紹介したライブラリのサンプルコードは Githubで公開しています
https://github.com/takezoe/jjug-javalib
Jetzt herunterladen