JJUG CCC 2014 Spring – Session

JJUG CCC 2014 Spring Timetable

Registration

セッション一覧

K-1 詳説 Java SE 8 – CCC Edition

櫻庭 祐一 (Java in the Box)

2014 年 3 月にリリースされた Java SE 8 は言語仕様が大きく変わるなど、エポックメーキングなリリースとなりました。Project Lambd や Date & TIme API などの導入より、コードの書き方も今までの Java とは様変わりしています。

そこで、本セッションでは、現在、ITpro において連載している詳説 Java SE 8 を CCC で再現します。なるべく多くのコードを紹介します。さて、1 時間でどこまでできるやら。

発表資料

K-2 Java 8 ラムダ式と Stream の概要について

Stuart Marks (Oracle Corp.)

このセッションでは、Java 8 の言語仕様に対する新機能、特にラムダ式、デフォルト・メソッド、メソッド参照、Stream API などの概要をご紹介します。Stream API を使用すると “fluent(流暢)” なスタイルのプログラミングが可能になり、並列処理用の実装もかんたんに実現できるようになります。

発表資料

H-1 Java 8 で RDBMS を実装してみた

きしだ なおき (Java コミュニティ@九州)

RDBMS の使い方や設計方法は、書籍や Web サイトなどたくさんの資料がみつかります。けれども、RDBMS がどのような仕組みになっているかは、なかなか資料がみつかりません。

このセッションでは、JParsec を使った SQL のパースと Java SE 8 を使った簡単なリレーショナルエンジンの実装を元に、RDBMS の仕組みについて考えます。

発表資料

H-2 Javaトラブルに備えよう

上妻 宜人 (JJUG)

ある日突然OutOfMemoryErrorが投げられる、想定していないタイムアウトに引っかかる、応答が返ってこないなど、トラブルは起こって欲しくない時に限ってよく起こります。

このセッションでは、Java EEサーバ上で稼働するアプリケーションを対象に、よくあるトラブルを交えながらテスト時にどんな内容をモニタリングしておいた方が良いか、どのような設定を事前にしておくことでトラブル解決に向けた情報が集められるかをご紹介します。

発表資料

H-3 初めての Java EE 開発から学んだこと

菊田 洋一 (株式会社 構造計画研究所)

Javaを利用した開発経験がない中、Java EE6によるシステム構築を行い、現在では中心技術として利用しています。

初めてJavaの世界に足を踏み入れて、苦労した点、良かった点など、開発を通じて学んだことを中心に紹介させて頂きます。

主に、これからJavaをやろうとしている方、Java EEの利用を考えている方々向けの内容となります。

発表資料

H-4 Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~

山本 裕介 (株式会社サムライズム)

TDD (テスト駆動開発) や Jenkins 等を使った CI (継続的インテグレーション) が注目を浴びていますが、TDD や CI により発見されたバグはもちろんデバッグする必要あります。

それなりに Java プログラミング経験があってもいざデバッグとなると「勘」・「print デバッグ」を多用していたり、または IDE のデバッグ機能を使ったとしてもブレークポイントをなんとなく使っている程度だったりという方は多いかと思います。

勘や print デバッグに頼ることなく Eclipse、NetBeans、IntelliJ IDEA の 3 大 IDE で使えるデバッグ機能の使いどころ、そして本番環境や CI 環境でしか発生しないバグの効率的な洗い出し方を紹介します。

発表資料

R1-1 Java 8 for Java EE 7/6

岩崎 浩文(楽天株式会社)

Java 8のリリースでその多くの改善点が話題になっていますが、Javaの多くの適用先である企業システムにとって、それらの改善点はどのように影響してくるのか。現在主流であるJava EE 6、及び今年以降に普及予定ののJava EE 7の両者に対して、Java 8を適用した際に変わる実装ポイントと、その利点について考えます。

発表資料

R1-2 PHP in Java -Quercus- によるレガシーマイグレーション実例

山下 竜司 (株式会社アットウェア/Facebook4J)

レガシーな PHP アプリケーションを段階的にメンテナンス性の高い Java アプリケーションへ – JVM 上で PHP を動作させるエンジンである Caucho Technology 社の Quercus を使用することでこのようなことが可能になります。

例えば、PHP で作成された既存のアプリケーションを刷新したいが、一度にすべてをリプレイスするほどの時間/費用がかけられない、必要な部分だけ Java で書き換えたい、などのケースでスモールスタートで段階的な改善を行うことができます。

このセッションでは、

  • Quercus は実際に使えるのか?
  • 工夫した/しなければならない点
  • ハマりどころ

などを実際に Quercus をプロダクションに投入し運用した経験をもとにお話します。

発表資料

R1-3 Java 開発で活かしてほしい Git, CI, そして継続的デリバリー

長沢 智治 (アトラシアン株式会社 エバンジェリスト)

開発環境は次のステージへ。DVCSの活用、継続的インテグレーション(CI)を「単なる流行りにしない」、「できるエンジニアだけでなくすべての現場へ」、「自動化が終わりではなく、価値を提供し続けるサイクルに」するためのきほんの考え方であり、ソリューションである Atlassian Git Essentials をご紹介します。

ライヴ デモンストレーションでは、フィードバックの収集、優先順位付け、タスクの実行、ブランチの作成、コード修正、Pull Request によるコードレビューとマージ、継続的インテグレーションと自動デプロイ、本番環境へのワンクリックデプロイメントを今までの開発のオペレーションに負担をかけずに行えること、そこでおこなった成果がトレーサビリティとして開発チームと利害関係者を心地よく、持続可能な現場にしてくれることをご覧いただく予定です。

デモでは、Git Essentials (JIRA Agile, Stash, Bamboo), SourceTree と Confluence, HipChat を用いますが、すべての開発現場のそれぞれのツール適用と活用の参考になればと思います。

発表資料

R1-4 JBoss.org – SwitchYard コミュニティ開発者の日常

五十嵐 知久 (レッドハット)

SwitchYard は JBossESB の後継製品として jboss.org コミュニティで開発が進めら れている、OSS のサービス指向フレームワークです。Red Hat 社員としてフルタイ ムでこの SwitchYard の開発に携わるようになり、前職とは激変した仕事の環境 や、得られる日々の発見などを、SwitchYard 自体のご紹介も交えながらお届けし たいと思います。

発表資料

R1-5 Java EE 7 対応! JPA の同時実行制御とロック

多田 真敏 (株式会社ウチダ人材開発センタ)

昨年、Java EE 7 がリリースされ、標準 OR マッパーの JPA も注目度が高まっています。

このセッションでは、JPA の中でも重要な「同時実行制御とロック」の仕組みを、基礎から丁寧に解説します (JPA を使ったことが無い方でも大丈夫です)。

DBMS 2 種類 (PostgreSQL・MySQL)× JPA 実装 2 種類 (EclipseLink・Hibernate)× LockModeType 6 種類 = 24 パターンで実験した結果もとに、各パターンの挙動の違いや注意点を徹底解説します!

発表資料

R1-6 最近の Java Web 開発 (2014 春)

文字 拓郎 (シンプレクス株式会社)

昨今注目を集めつつある SPA の開発事例をベースに、Java を用いたモダンな Web 開発の現場事情について、フロントエンドの最新事情なども交えつつ詳しくお伝えします。

単なるライブラリやフレームワークの説明ではなく、実際の業務アプリケーションの開発において、どのようなアーキテクチャや考え方でアプリケーションを開発しているのかという点にフォーカスし、反省点や今後の課題なども交えて包括的にお話したいと思います。

※ このセッションは昨年他所で発表した内容を大きくアップデートしたものです https://gist.github.com/monzou/e355a2c425cdad109537

発表資料

R1-7 サーバサイド JavaScript 標準から見た Nashorn の意義

酒巻 瑞穂 (html5j エンタープライズ部/FirefoxOS コードリーディング)

サーバサイドJavaScriptにはECMAScriptやCommonJSといった標準が既に存在しており、かつて独自仕様で混沌としていた各製品が、この標準に準拠することを目指すようになりました。
2013年、とうとうJavaの世界にもNashornと呼ばれるJavaScriptの動作環境が出現。
真にオープンなアプリ開発を目指すのであれば、標準へ準拠していくことが求められますが…、果たしてNashornにそれができるのでしょうか?

発表資料

R2-1 オブジェクト指向の子どもたち

蓮沼 賢志 (GlassFish Community)

オブジェクト指向がもたらす高度な抽象化により、私たちはデータをより現実に近い形で容易に扱うことができるようになりました。このセッションでは、現実の日付・時刻を忠実に表現する Date and Time API (JSR 310) と Stream API への対応でより数学的操作が可能になった Collections Framework を中心に、Java のオブジェクト指向がどのようにデータを抽象化したのかを考察します。また、今年 4 月に立ち上がった最新の JSR であり、SI 単位系を統一的に扱う Units of Measurement API (JSR 363) についても簡単にご紹介します。

発表資料

R2-2 Java ではじめる Apache Cassandra

森下 雄貴 (DataStax, Inc.)

元々 Facebook で開発されたオープンソースの NoSQL データベースである Apache Cassandra は、現在ソーシャルデータを扱うサービスはもちろん、金融、ヘルスケア、オンラインゲーム、小売など様々な業種において、高速・高可用性・スケーラビリティが求められる場面で多数の企業に利用されています。誕生から 5 年が経過し、運用や開発の敷居を下げる様々な機能が追加されてきました。

このセッションでは、Apache Cassandra の特徴を、最新の機能を含めて説明し、Cassandra の問い合わせ言語である CQL (Cassandra Query Language) と Java アプリからのデータアクセス方法についてご紹介いたします。

発表資料

R2-3 Cluster/J で MySQL Cluster をトランザクション対応NoSQLとして使う

梶山 隆輔 (日本オラクル株式会社 MySQL Global Business Unit)

今回の講演では、MySQL Cluster の Java 用 NoSQL API である Cluster/J を活用した NoSQL としての利用方法などをご紹介いたします。

MySQL Cluster は MySQL サーバをベースとしたオープンソースの分散型のデータベースクラスタです。トランザクションに対応した RDBMS として SQL を使ったデータアクセスも可能ですが、複数の NoSQL API を持っているため、数少ないトランザクション対応型の NoSQL としても利用可能です。

発表資料

R2-4 Skinny Framework で始める Scala

瀬良 和弘 (日本 Skinny Framework ユーザ会)

Skinny Framework は “Scala on Rails” をキャッチコピーとしたフルスタックな Web フレームワークです。

いわゆる Web アプリ向けの MVC スタイルを踏襲し、バリデーション、ORM、DB マイグレーション、メール送信など、 多くのケースで必要となるおなじみのコンポーネントが一通り揃っています。Scalatra の API をベースに Rails を強く意識した API が提供されており、既存の Web アプリケーション開発のノウハウを活かしつつ Scala を学ぶことができます。

また、初期開発での高い生産性だけなく、継続的な開発でのメンテナンス性も重視しており、CoC からはずれた場合でも対応できる、テスタビリティが高い、Windows 環境でも簡単に動作するなどの特徴があります。今後も実用的なフレームワークとして利用いただけるよう発展させていく方針です。

ときに初心者にとって敷居が高いと言われることの多い Scala の環境構築ですが、Skinny Framework ではそこでつまづかないように zip ファイルをダウンロードして解凍するだけですむひな形のプロジェクトを提供しています。「Scala をいつかやってみよう」と思いながら、なかなか手を出せていなかった Java エンジニアの方々の最初の Scala 体験に自信を持ってオススメできると自負しております。

この発表では Skinny Famework について紹介させていただきながら、一人でも多くの方に Scala の魅力をお伝えできればと思います。

発表資料

R2-5 Metaspace を OpenJDK 実装からみてみよう!

末永 恭正

Java 8 の目玉の 1 つだった「Permanent 世代の削除」と「Metaspace の導入」。

ネット上でも様々な記述が見受けられますが、HotSpot VM として Metaspace の導入により何が変わって、何が変わらないのか? Java 8 を動かす上で注意しなければならないことはあるのか? こういった疑問に OpenJDK 8 の HotSpot VM のソースコードを交えながらお答えしていきたいと思います。

発表資料

R2-6 JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)

戸田 洋三 (JPCERT コーディネーションセンター)

セキュアな Java アプリケーション開発を行う上で重要なことは、過去に発生した脆弱性事例を知り、同じ失敗を繰り返さないことです。JPCERT/CC では、Java アプリケーション開発者を対象とした、脆弱性事例の解説資料を作成公開しています。

今回は、標準ライブラリに含まれている AtomicReferenceArray クラスに存在した脆弱性について解説します(CVE-2012-0507)。この事例では、脆弱性を悪用することにより、サンドボックス内で動作する applet から任意のコードを実行することが可能になっていました。

すでにこの脆弱性に関する情報は Web 上に散見されますが、どこにどのような問題があったのか、どのように修正したのか、についてきちんと解説している情報はあまりないようです。

どのような失敗があったのか、そしてどのように修正したのか、を知り、今後の開発に役立てていただければと思います。

発表資料

R2-7 Java でトランザクショナルメモリを使う

数村 憲治 (富士通株式会社)

最近の CPU の中には、ハードウェアトランザクショナルメモリ (HTM) をサポートするものがでてきました。

synchronize や java.util.concurrent.locks パッケージといったこれまでの Java におけるロック機構は、悲観的ロックでしたが、HTM を利用することによる楽観的ロックの実現可能性を議論します。

前半では、これまでの Java におけるロック機構の歴史を振り返り、後半では、HTM を Java で使う可能性について、Intel Core プロセッサとして最初に HTM をサポートした Haswell をベースに紹介します。

発表資料

R5-1 Eclipse と Liberty プロファイルで始める Java EE 開発ハンズオン

田中 孝清 (日本 IBM)

このハンズオンでは,Eclipse と WAS Liberty プロファイルを使用した Servlet/JDBC アプリケーション、JSF/CDI アプリケーションの開発をご紹介します。

WAS Liberty プロファイルは,高速で軽量な Java EE アプリケーション実行環境です。開発者は無償で利用することができ,Eclipse IDE と組み合わせることで,Servlet/JSF/CDI などを利用したアプリケーションを効率よく開発することができます。他の IDE をつかって Java EE アプリケーションを開発している方,Eclipse は Java SE の開発にしか使っていない方,Eclipse をつかった Java EE アプリケーション開発を体験してみませんか?

参加される方は,十分に充電されたノート PC に以下のソフトウェアを導入の上おこしください。

  • Java SE 7
  • Eclipse IDE for Java EE Developers (Juno もしくは Kepler)
  • Liberty Profile Developer ToolsおよびLibertyプロファイル

導入にあたっては以下のページなどを参考してください。

発表資料

R5-3 TDD BootCamp in JJUG CCC -レガシーコード対策ハンズオン-

渡辺修司 with TDDBCオールスターズ (クラスメソッド株式会社 / TDDBC)

TDD(テスト駆動開発)を導入する最大の効果は、コードの内部的品質が向上することにあります。

例えば、常にテストコードを意識することにより、モジュールが疎結合となりインターフェイスも洗練されます。
テストコードがあることで安心して内部ロジックを変更することができます(リファクタリング)。
入出力を強く意識することになるため、早い段階で設計の問題に気付くことができます。

本セッションでは、素性の悪いコードをサンプルとして、TDDの考え方を適用した場合、
どのように考え、なにをテストケースとし、どのように実装するかを体験します。

発表資料

R5-5 女子だけの、おしえてみんなの勉強法 – いまどき女子の、情報収集術大交換会!!

Java 女子部

なにかと忙しい女子ですが、スキルアップのための情報収集だってやってます。でも…

「みんなは、どうやっているんだろう?」「もっと効率的な方法はないかな?」「どんなツールが使えるの?」と、気になるところも多いはず。

そんな女子のために、ライフスタイルに合わせた勉強法や情報検索術などを紹介します。発表のあとは参加者で、おやつを食べながらディスカッションの時間も設けてありますので、小腹が空く時間帯に、お腹も満たしながらかしこく情報収集しちゃいましょう!

たくさんの女子の参加をお待ちしています♬

発表資料

R5-6 Hello, engineer world! 新人リケジョの 1 年

白井智子 (Acroquest Technology)

皆さんの会社の新人教育は、どのように行なっているでしょうか?

私はこの一年間、一人ひとりのレベルにあわせた技術研修・社会人研修に加え、実務での OJT や社外発表などを組み合わせた形の研修を受けてきました。

私は、理系女子 (リケジョ) で、学生時代から、Java を授業で習ったり、研究で使ったりしていたものの、まだまだ仕事で使えるレベルではないと感じていました。

私自身、「なんとなく知っている」状態からのスタートでしたが、自社の Acroquest の研修などを通じて、Java の言語自体、そして、プログラミングの「知識」と「考え方」の両面を伸ばす事ができました。さらに、新人ながら、勉強会で発表する機会も得られるようになりました。

今回は、そんな私が新人の 1 年間を通して学んだことや感じたことを、研修の内容ととともにお伝えします!

発表資料

R5-7 IBM SDK for Java 8の全貌

盛林 哲 (日本アイ・ビーエム(株))

2014年3月についに正式公開されたJava8.独自実装のJVM/Java SDKを公開して
いるIBMからもJava 8対応版が公開されています.
当セッションでは

  • クラウド時代に対応したマルチ・テナンシー
  • 昨年秋のJavaOne 2013で発表されたPacke Objects
  • 新しい効率的なGC
  • 進化した問題判別機能
  • IBM Javaおすすめの無償ツール

などIBM Javaでの最新情報をお伝えします。
そしてコードネームBlueMixの最新情報にも触れます。

発表資料