goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

位置をGoogleMapに表示するためのAPI利用法

2016-09-13 18:18:58 | JavaとWeb

場所とタグを含んでTweetし、みんなの位置をGoogleMapに表示するために必要なAPI
http://blog.goo.ne.jp/xmldtp/e/a741445a4bfde8e7ce03dca78db360f7

の後半、「位置をGoogleMapに表示する」を行います。

■お題
前の

Yelp APIを使って、東京のマクドナルドを検索する方法
http://blog.goo.ne.jp/xmldtp/e/f307a7f1a7d24b4c8983da873411d17f

で出てきた、

某マックの緯度経度
 latitude": 35.6977588049412, "longitude": 139.707627867968

にマーカーをつけ、その周辺の地図を表示する。
(地図は、lat: 35.6977, lng: 139.70762 を中心に出す)




■手順

Google Mapsの表示にはAPI登録が必須になりました
http://design-plus1.com/tcd-w/2016/06/google-maps.html

にある

・「APIキーの取得」
 をします
 (googleアカウントは持っているという前提を置きます。
 もっていない場合は、googleアカウントの取得が必要です)

次に
・「プログラムを作成」

して、
・ブラウザで表示

します。以下詳細に説明します。




■APIキーの取得

まず、Googleアカウントでログインします。

https://accounts.google.com/servicelogin?hl=ja


その後、そのブラウザで

Google Maps APIs for Web
https://developers.google.com/maps/web/


キーを取得をクリック

続けるをクリック

適切に選択して「同意して続行」

キーの制限「なし」でよければそのまま、いやなら適当に設定して「作成」。次にAPIキーが出てくる。

閉じる前に、キーの値をコピーして、どこかに保存する。




■プログラムを作成
まず、

https://developers.google.com/maps/documentation/javascript/

にある「デモとサンプルコード」のソースをコピー

そして、

https://developers.google.com/maps/documentation/javascript/markers

マーカーを参考に
(サンプルコード中、上の var markerは、引数内に
map: map,
 がある。これは初期表示などに使う。一方下のvar markerは、
 引数内にそれがない。その場合は、
  marker.setMap(map);
 と、動的にマーカーをつける)

お題である

某マックの緯度経度にマーカー
 latitude": 35.6977588049412, "longitude": 139.707627867968
地図
 lat: 35.6977, lng: 139.70762を中心
にしてみる。

以下のようなソースになる。

<!DOCTYPE html>
<html>
<head>
<!-- This stylesheet contains specific styles for displaying the map
on this page. Replace it with your own styles as described in the
documentation:
https://developers.google.com/maps/documentation/javascript/tutorial -->
<link rel="stylesheet"

href="https://developers.google.com/maps/documentation/javascript/demos/demos.css">
</head>
<body>
<div id="map"></div>
<script>
function initMap() {

// Create a map object and specify the DOM element for display.
var map =" new google.maps.Map(document.getElementById('map'), {
center: {lat: 35.6977, lng: 139.70762},
scrollwheel: false,
zoom: 18
});

var myLatLng = new google.maps.LatLng(35.6977588049412,139.707627867968);
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: 'Mac'
});

}

</script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>
</body>
</html>

YOUR_API_KEYに、コピーしたAPIのキーを入れて、保存



■ブラウザで表示

保存したものをIE等で表示させる。こんなかんじになる

・・・って、このMac知ってる!いったことある!!
多分、よく要求開発アライアンスの会場になる、日本総合システム株式会社の近くにある、東新宿駅前のマック・・・

って、なぜここのマックなんだろう?そんなに有名なのか?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Yelp APIを使って、東京のマクドナルドを検索する方法

2016-09-13 15:59:26 | JavaとWeb

げ、食べログAPI使えないんだ。ってことで、Yelp API
http://blog.goo.ne.jp/xmldtp/e/9e5d2883cd932f501296c27b423a40f3

のつづき(実践編)。
yelpAPIを使って、東京のマクドナルドを検索する。
PHPで作ってみる。




■システム構成

ロリポップ上にホストがあり、そこにPHP(sample.php)を置いている。
そのPHP(sample.php)が、yelp APIにアクセスしている。
ブラウザで、そのPHPファイル(sample.php)を表示している。

手順は、以下の通り。
・まず、yelpにサインアップ
・APIキー等を取得
・サンプルプログラムをダウンロード
・サンプルプログラム修正
・sample.phpをアップロード、表示
以下、詳細に




■まず、yelpにサインアップ

Yelp for Developers
http://www.yelp.com/developers

に行く。

「GetStart」をクリック。
ログインしていなければ(できっこない。まだ登録してないんだから)
以下の画面がでるはず

Sign Upをクリック

名前とかをいれて、Sign UPなんだけど、ここで、ZIP Codeとあるんで、
素直に郵便番号を入れると・・・
エラーになって、郵便番号の下に、国名が入れられるようになる。Japanを選択

なんか、登録できた旨が表示される。
ここで、メールアドレスを入れていると思うんだけど、
そのメールアドレスにメールが来ているかチェック(着ているはず)

メールの「Confirm Email」をクリック。




■APIキーを取得
サインアップが成功しているブラウザで(つまり、ログイン後?)

Yelp for Developers
http://www.yelp.com/developers

に行って「GetStart」をクリックしたら、以下の画面になったんだけど、

それでいいのかな?とにかく、この画面から・・・

Your Website URLには、PHPを置くサイト(ロリポのabc.main.jp上に置くのなら、abc.main.jp)
How you will use the APIは、Searchとした。いいのかな?
Industryは、otherで、そうすると、下に空欄が出たから、softwareと入力した。もう適当。
その下のチェックボックスに(同意するか)チェックして、submit

っていう画面が出てきて、キーが入力できる。(実際には、この右側にキーが出る)

コピーをとって控える。後で使う。




■サンプルプログラムをダウンロード
 サンプルが以下のサイトにある。

https://github.com/Yelp/yelp-api/blob/master/v2/php/sample.php


Rawをクリックすると、テキストがでてくるので、それをファイル保存して、sample.phpとして
保存する。

 このソースを見ると分かるけど、OAuthのライブラリを使っている。それは

https://github.com/Yelp/yelp-api/blob/master/v2/php/lib/OAuth.php

にある。おなじく

Rawをクリックすると、テキストがでてくるので、それをファイル保存して、OAuth.phpとして
保存する。このOAuth.phpは修正しなくていい。そのまま使う(libフォルダは作成するけど)




■サンプルプログラム修正
 ダウンロードしてきたサンプルプログラムsample.phpのほうは、修正する。
 まず、開いて、

はじめのほうにある、$CONSUMER_KEY以下4つは、「APIキーを取得」で取得した、キーとか、トークンとかそのたもろもろ(4つあるはず)をいれる(順番に)。

 その下の、$DEFAULT_TERMを修正すると、本来その言葉、場所を検索するんだけど、このままだと
分かりにくいので、今回は、ここを「直さないで」以下のところを直す。

 まず、110行目あたり、

  $url_params['term']=$term;
  $url_params['location']=$location;

と、引数をそのまま入れるようにする。

 そして、最後のあたり

$optionに入れているところからコメントアウトして、
$termに、検索したいマクドナルド(英語で"mcdonalds")、$locationに"tokyo"といれて、
query_apiを呼ぶと加工してしまうので
search($term,$location);を呼んで、プリントアウトする。
こうすれば、JSONがそのまま見える。




■sample.phpをアップロード、表示
 今回は、ロリポップを使うという話なので
 sample.phpを直下におき、
 libというフォルダをつくり、その下にOAuth.phpをおく
ことになるけど、他のプロバイダでも、同じように、sample.phpは直接見えるところ、
OAuth.phpはlibの下になるように置く。

 そして、sample.phpをアクセスすると

みたいなかんじで、JSON形式で、検索結果が見れる。

緯度経度指定などは、

https://www.yelp.com/developers/documentation/v2/search_api

を参照。cllだと思うけど、今やっている時間が無いので、また今度。

【参考サイト】

http://imagination-i.net/2014/04/15/javayelp-api%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/

https://www.imamura.biz/blog/20635

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

3D用のJS、jThree.jsが、いつのまにか、Grimoire.jsになった件

2016-09-04 23:12:06 | JavaとWeb
未踏に受かって、名前がかわったらしい。詳しくは↓

Grimoire.js Community announcement June 20 2016
http://www.slideshare.net/LimeStreem/grimoirejs-community-announcement-june-20-2016

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Spring BootのSTSではまったところメモ

2016-08-22 22:50:42 | JavaとWeb
ネットでしらべてもよくわからなかったところを、
忘れないうちにメモ(現状、自分へのメモ・あとで、充実させるかも)




■とにかく立ち上がらない
・STSを立ち上げようとすると、Javaが古い、1.8を使えといわれる

・Java was started but returned exit code=13

 とかかれたダイアログ(OKしか押せない)が出て、立ち上がらない
  →64ビット版と32ビット版の違いらしい?

【理由】
 Javaがあってない

【対策】
 最新版の”JDK”を入れなおす
  →ふつうにJavaのダウンロードをするとJRE
   JREは、違うエラーになる




■maven installで、JDKを入れているのに、エラーメッセージで
 JREが入っているみたいなエラー(下の赤い四角形)が出る。


【理由】
 JDKは入っているし、JAVA_HOMEもパスもJDKになっている・・・けど、
 なぜか、STSのinstall Javaが、JREを指している

【対策】
 JDKのパスに変える
 ※8月24日追加
stsのメニュー Window→preferencesを選択すると、以下のダイアログが出る。

そのダイアログでJava→Installed JREsを選択したとき、右側に、赤い四角形で囲んだように、
javaのあとに(JDKとこないですぐに)JREときたら、JDK”ではない”JREを指定している。
この場合、これを選択して、Editボタンをクリック。出てきたダイアログで、JDKの下にある
JREを選択する。




■m2のリポジトリのtomcat-embeded-coreにアクセスできない(しっかり、そのjarはあるのに)といわれる

【理由】
 よくわからないけど、なにかおかしくなったみたい

【対策】
以下のことを順に行う
・stsを終了する
・ユーザーの自分のアカウントの下の.m2など、.ではじまるものを削除・・・すると怖いので、一時的にどこかにおく
・STSを立ち上げ、workspaceをいままでと違うところにする
そしたら、なぜか、うまくいった




■(8月24日追加)以下のダイアログが出て、急に立ち上がらなくなった。

そのログをみると
!SESSION 2016-08-24 11:17:49.203 -----------------------------------------------
eclipse.buildId=3.8.1.201607290850-RELEASE-e46
java.version=1.8.0_101
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=ja_JP
Framework arguments:  -product org.springsource.sts.ide
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.springsource.sts.ide

!ENTRY org.eclipse.osgi 4 0 2016-08-24 11:17:55.625
!MESSAGE Application error
!STACK 1
java.lang.ArrayIndexOutOfBoundsException
	at java.lang.System.arraycopy(Native Method)
	at java.util.Arrays.copyOfRange(Unknown Source)
	at java.util.Arrays.copyOfRange(Unknown Source)
	at org.eclipse.ui.internal.ide.ChooseWorkspaceDialog.lambda(ChooseWorkspaceDialog.java:380)
	at java.util.stream.ReferencePipeline.accept(Unknown Source)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
	at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
	at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.util.stream.ReferencePipeline.collect(Unknown Source)
	at org.eclipse.ui.internal.ide.ChooseWorkspaceDialog.createUniqueWorkspaceNameMap(ChooseWorkspaceDialog.java:382)
	at org.eclipse.ui.internal.ide.ChooseWorkspaceDialog.createRecentWorkspacesComposite(ChooseWorkspaceDialog.java:325)
	at org.eclipse.ui.internal.ide.ChooseWorkspaceDialog.createDialogArea(ChooseWorkspaceDialog.java:176)
	at org.eclipse.jface.dialogs.TitleAreaDialog.createContents(TitleAreaDialog.java:158)
	at org.eclipse.jface.window.Window.create(Window.java:426)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1095)
	at org.eclipse.jface.window.Window.open(Window.java:783)
	at org.eclipse.ui.internal.ide.ChooseWorkspaceDialog.prompt(ChooseWorkspaceDialog.java:114)
	at org.eclipse.ui.internal.ide.application.IDEApplication.promptForWorkspace(IDEApplication.java:342)
	at org.eclipse.ui.internal.ide.application.IDEApplication.checkInstanceLocation(IDEApplication.java:261)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:128)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1519)



まったく、意味不明・・・

【理由】
 よくわからない(ファイルパスがながすぎる?)

【対策】
 以下のようにしたら立ち上がった。理由不明
・Cドライブ直下にstsというフォルダをつくり、その中に解凍し魔物を入れる
・そこのstsを立ち上げる
・workspaceは、実行ファイルsts.exeと同じフォルダ内につくる。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Java EE の戦略アップデート

2016-08-18 09:26:00 | JavaとWeb
あとでよむ

Java EE の戦略アップデート(2016/08/09 : JCP Executive Committee)
https://yoshio3.com/2016/08/17/java-ee-8-strategy/

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Javaで画面を作らなければいけないとき-「SwingDesigner」

2016-08-03 14:10:22 | JavaとWeb
って、ありませんか?
え、ない??Webだけで十分?
あると思ってください。そういうときって、Swing使いますよね。
で、そのSwingの画面を早く作れるSwingDesignerについて書いてある
サイトをみつけたので、メモメモ


javaで超簡単にGUIを作成するためのEclipseプラグイン「SwingDesigner」 インストール
http://konbu13.hatenablog.com/entry/2013/12/25/230637

「SwingDesigner」でSwingアプリケーションをつくろう! その2~アプリケーション新規作成とコンポーネント配置
http://konbu13.hatenablog.com/entry/2013/12/27/163202

「SwingDesigner」でSwingアプリケーションをつくろう! その3~アクションとファイルの読み込み
http://konbu13.hatenablog.com/entry/2013/12/27/164627

「SwingDesigner」でSwingアプリケーションをつくろう! その4~ファイルの中身を表示
http://konbu13.hatenablog.com/entry/2013/12/27/183527


「SwingDesigner」でSwingアプリケーションをつくろう! その5~ファイルを保存する
http://konbu13.hatenablog.com/entry/2013/12/28/173959

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Java Day Tokyo 2016に行ってきた!その6 Javascript(JET)

2016-05-26 12:12:23 | JavaとWeb
5月24日、Java Day Tokyo 2016に行ってきた内容をメモメモのつづき

今回は

Introduction to Oracle JET

をメモメモ




JET=Javascript エクステンション ツールキット
社内で使っていたが、オープンソースになっている

・OracleはJava→なぜJavascript:クラウドがあるから
  クラウド:アプリを作りたい
   グラフ、チャート、データ可視化→Jetコンポーネント
   JQuery上で作っている
   置き換えるのではない。
   使いたければ使ってもいいという考え方
   ベースラインのスタートポイント
  Cordova,phonegap
   →同じソースでアプリ→Jetをつかえば

・社内のJetカスタマー
  ブラウザで
  Oracle JET 社内でのインパクト、
  オープンソース
 世の中にライブラリはいっぱいある
  JETはライブラリではない
  アプリケーションフレームワークでもない
  Oracle:フルスタック
  JETはちがう:うすいJET

・様々なライブラリと用途
  アプリケーションフレームワーク・ライブラリ
  コンポーネントライブラリ
  ビルドシステム Grunt,Gulp,Brunch
  テストフレームワーク
  その他
 →まるで、ジャングル

・必要な機能
 レスポンシブルデザイン
 モジュラりティ
 シングルページアプリケーション
 アクセシビリティ
 国際化
 セキュリティ
 パフォーマンスの最適化
 標準化への準拠
 ドキュメントとサポート

デモ
 RequireJS
  状況に応じて、依存性の順番→スクリプトローダー
 knockoutJS
  データバインディング。変化したら通知する
 JET
 Hammer
  タッチモバイル用
 Yeoman NetBeansからJET使える
 JET ハイブリッド・・Cordovaベースで作れる
 ライブでアップデートできるスクラッチパッド

まとめ:JETは
 中上級者を対象
 オープンソースライブラリを使用
 データビジュアライゼーションにフォーカス
 エンタープライズ仕様
 アクセシビリティ
 モジュラりティなど
 oracle cloud カスタマーから→Githubでオープンソース
 JETコンポーネントの標準
 ライブラリの集合体
 アプリケーションビルダー ブラウザでアプリ作れる




Java Day Tokyo 2016のこのシリーズ、おしまい

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Java Day Tokyo 2016に行ってきた!その3 JavaEEセキュリティ

2016-05-25 12:12:08 | JavaとWeb
5月24日、Java Day Tokyo 2016に行ってきた内容をメモメモ。





JaveEE7アプリケーションとセキュリティ
・自己紹介
・若手のころ:社内システム
  XSS程度
・とある案件:セキュリティ診断 NG判定
・セキュリティ要件に合わせたコード
 システムによって異なるセキュリティ要件
 イントラのシステム:致命傷になりにくい
 →公開します:致命傷
・最初からセキュアなコード
 コーディングのノイズ
・実装コストを抑える方法
  フレームワークが対応
  ビュー、コントローラーでの対応
  その他
・対策の基準
 IPA:安全なWebサイトの作り方
 掲載されている脆弱性と対策
・クロスサイトスクりぷティング
  動的ページでJSコードを注入する攻撃
  動的に出力する値をエスケープする
 反射型、蓄積型、Dom型がある
・HTMLテンプレート
  EL式による値書き出しはデフォルトではエスケープしない
  関数を自作する→カスタム関数はXMLで書かれた設定ファイルを作成する必要有
  もっとシンプルにメソッド呼出し
  Faceletsのエスケープ対策:デフォルトで用意
 →対策漏れの検出容易性を考えるとFacelets
・クロスサイトリクエストフォージェリー
 攻撃者:外部ドメインから、非攻撃者の意図しないリクエストを送る
  対策:そもそも、Getリクエストで状態変更してはいけない
     トークンを送信、一致するか確認
   ログインした時ではだめ?セッション生成時に行う
   セッションID以外を使う
 JSPのCSRF:対応していない
 Facelets;Hiddenパラメータが埋め込まれている
  ただし、ステートレスの場合は機能しない
  faces-config.xmlはページを開くときにも要求されてしまう
・SQLインジェクション
 動的SQLで悪意のあるパラメータ
 パラメータにはプレースホルダーを使う
 JPAのプレースホルダー
  JPQL:アノテーション@namedQuery
 別のSQLインジェクション
  CriteriaAPIを使用する
・セッション管理の不備
 セッションIDの推測、固定化
 ログインしたタイミングでセッションをリフレッシュ
 ServletAPIのForm認証
   GlassFishではリフレッシュする→使いやすくない
 changeSessionIDを呼び出す
 Cookieにsecure属性をつける
・パス名
 パラメータをそのままファイルパスに
 →意図しないパス
 パスチェック:自前のAPIでチェック
 自前ラッパー:テストコードが書きやすい
 根本的:ファイル名を直接指定する実装を避ける
・クリックジャッキング
 iframeで透明ページを重ねてボタンを押させる
 X-Frame-Optionsをつける
 →他のiframeも影響
 SAMEORIGINにする
・HTTPヘッダインジェクション
 自力でヘッダーを書きださない
・メールヘッダーインジェクション
 パラメータをヘッダーにセットしない
・OSコマンドインジェクション
・バッファオーバーフロー
 →省略
  外部プロセスを起動しないから
・アクセス制御、認可制度
 →省略k、アプリケーションによるから

その他の話題
・X-content-type-options:nosniff
 sniffきのうを無効化:サーブレットフィルタ
・Content-Security-Policy
 dom型でも防げる

まとめ

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Java Day Tokyo 2016に行ってきた!その2 Java SE 9

2016-05-25 08:46:41 | JavaとWeb
5月24日、Java Day Tokyo 2016に行ってきた内容をメモメモ。

プログラムでは「Java SE 9 Overview」となっていたもの




■Java Roadmap

アジェンダ
・Java Adaption
・JavaSE9
・Beyond 9

みなさんのおかげでNo1
・採用率
 スピード上がっている
・クラウド展開プラットフォームとしてもNo1
 Amazonのワークロードの4分の1はJava
 Googleはもっと大きく
 Javaのエコシステム;ベストのクラウド環境提供

今やっていること
・セキュリティ:重要視
  後方互換性
  コスト低減:メモリ、
・密度の最適化
  並列のスケールアップ、レプリケーション
  ランタイムをシェアドライブラリ
・スタートアップの時間
  過剰なプロビジョニング
  マイクロサービス
  プリコンパイル JVM
・予測性
  ガベージコレクション
  数ギガ~数テラ、予測可能

ルック&ふいーる、堅牢性、読みやすさ、使いやすさ
1回書く クラウド スケールアップ

Java9
・クラウドのためのモジュール型プラットフォーム
・アプリケーションが必要なものだけランタイムが入っている
  コンパクト1,2,3プロファイル
・モジュールシステム:明示的仕様
  モジュールinfo
 ジグソー:どのAPIが使えるか指定できる→依存関係
 なぜ
  1)マイクロサービス
  2)セキュリティ:アクセス保護
・あたらしいツールチェーン

・どのモジュールが必要か?選択
 りんキング(JLink)ユニークなランタイムイメージ

ジグソーセキュリティ

・マルチリリースJarファイル

・G1をガベージコレクションとして採用
 ヒープ分割
 テラバイトのヒープ→インメモリ G1ではできる
  →ビッグデータ
  リードオンリーリージョン

・JShell:REPL (インタラクティブなツール)
 Javaに慣れていない人に良い
 例

・バージョニング
 新しいフォーマット

・インターなるAPI削除
 sun.misc,sun.reflectを削除
 →意見ほしい

・Javaミッションコントロール
 いろんなプロファイル

・アドバンスド マネージメント コンソール
 止められないときのアップデートなど

9以降
・オブジェクト データ レイアウト
 データの最適化
・クラウド:効率大事
・2つのタイプ:プリミティブタイプ、オブジェクトタイプ
 →オブジェクトは柔軟性は高いが、コスト高い
・オブジェクト:ヘッダーにかなりのコスト
 ガベージコレクションでヒープに
 コストかかる
 →新しい構造 クラスからバリューへ
  Arrayの最適化:GPUへ同じパフォーマンス
・いくつかのサービス
  ネイティブ
  プロジェクト パナマ
  セーフポイントのコスト削減

キーメッセージ
・8は大きな成功
・9モジュールランタイム
・10、11 よりセキュア、クラウドの中で効率的、予測性
 モダナイズ

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Java Day Tokyo 2016に行ってきた!その1 ドローンとPepperとJava

2016-05-24 21:19:10 | JavaとWeb
5月24日、Java Day Tokyo 2016に行ってきたので
その内容をメモメモ。まずは、基調講演ですが、はじめ、少し遅れていったので、メモできていない




■(始め少し遅れたので、この前、メモできていない)

デジタルエイド、クラウドエイド
Java 若い人もシニアも
Java 愛してますか:好きか嫌いか
Javaと生活
・NetFlix,UberもJava:生活に密着
この先

I love java

■Java overall
Java
・使われている
・スマートシティ、生活
・哲学がある
  8 ラムダ式 今後 モジュラりティ
・投資、技術、教育、ローカライズリソース
 Javaマガジン読んでね
・Open JDK
・皆さんも家族の一員
・エコシステム:
 ファブリック
 Java コミュニティ プロセス JCP

■JCP
・成功のカギ:コミュニティ
 17年間
 お互いから学び合う
 成功続ける:皆さんからも反応
 Javaコミュニティメンバー JCP.NEXT
  企業の参加、NPO、ユーザーグループ、個人
  5年の計画
 日本:重要な市場
・どうして参加
 知識
 スキル
 楽しむ
・会社としてのメリット
  要件
  将来
  新しい市場
・皆さんも参加してね!

■技術的な話
 No1になった
 Java8
  新しい機能もでる
  言語、ライブらし
 StreamAPI
  シンプルな形
  MapReduceのかたち
  エンジン
 Java8クラウドでデプロイ
   Javaミッションコントロールとフライトレコーダー
   アドバンスド マネージメントコンソール
 複数のJavaバージョン
・向こう20年、ますます発展
 セキュリティ:1番のプライオリティ
 密度:ユーティリティコンピューティング
  メモリのフットプリント削減
 起動時間:速く起動したい 9で改善
 ガベージコレクション:パフォーマンスに影響 予測性、低遅延性
 プロファイリング
 言語のモダナイズ
・Java9
 モジュール化
 Javaプラットフォームの解体
 セキュリティ
   (バウンダリ)
 パフォーマンス
→ジグソーの中身
 OpenJDKで開発
 REPL提供:インタラクション
・9以降
 Project Valhalia
  メモリフットプリント少なく
  Value Type
 Project Panama
  ネイティブとの境界線
  あたらしいツールセット
  最適なスピード、性能向上
・OpenJDK

■ツールの話
・デモを交えて
・その前にNetBeansIDE
  Javascriptでも使われている
  Oracle JETでも
  JDK 9
  ジグゾー
・デモ

■サービス
・様々なトレンド
  マイクロサービス
    その前はモノグリッド
  →アジャイルになる
  分散化コンピューティング
  polyglot様々な言語
  新しい技術:コンテナ DevOps
   どこで取り込む?
・JavaEE 7
  HTML5、JSON-P
  RESTFul
  オンプレで広くつかわれているが
  クラウドに移行している
  オンプレからクラウドへ
  Dropウィザード はービット
  コミュニティから
   JSON-B,CDI2
  でも、マイクロサービスも
・将来
  マイクロサービス:ステートレス→スケーラビリティ
  モノリス:
 ポリグロっと:RDBとNoSQLも
  モノリス:開発チーム、縦割り
  マイクロサービス:1つのチームにいろいろ
 明らかにクラウド化
  コンテナに変化
  IPがダイナミックに付与、
  イミュータビリティ
  サービスとして消費、インフラ違うだけ
 主要な要件
  お互いから隔離されている:マルチテナンシー、ドメインパーティション
 もっと、モジュラー
 使いやすい
 起動早く:コンテナ起動
 JAX-RS,ノンブロッキングIO、サーキットブレーカー

■損保ジャパン日本興亜のJAVA戦略
・会社案内
・IBM 基幹→COBOLをJAVAへ

3つのデシジョン
1.実現方式の決定
  現行ソースの洗練か?Re-Writeか?
2.言語の決定
  COBOL継続か?他言語への転換か?
3.フレームワークの決定
  OSS-FW?ベンダー提供FW? Java EE?
→JavaEE7ベース

・JavaEE7利用方針案
 プレゼン
  HTML5
  MVCは8
  Faceletのよしあし → JSF

 ビジネスロジック
  CDI:しっかりインジェクション
  コーディングも・・アノテーション定まってないが、

 パーシスタンス
  SQL?O/Rマッピング?
  デジタルディストラクション
  BigQuery,Hadoop→どこまでSQLにこだわるんだ!
  JPA

→動くのか、模索
  JAX-RS、JBatchも試してる
 アノテーション
 JCP

・保険の先へ挑む
 ・安心安全健康支援
 ・デジタル戦略の推進
 ・Java環境全面採用による業務革新


・オートバイで回った。インタビュー
 特別な発表
・セバスチャンがJavaチャンピオン さけ
・鈴木さん

■日本Javaユーザーグループ
・ぜひ参加してね(今4920人)
・カンファレンス、地方のJUG、JSP
・ないとセミナー
・JJUG CCC 2016 Spring
 JavaDayより大きい
 次は11月
 1380名申込、810人参加43%がはじめて
・なぜコミュニティに参加するの?
 現場のノウハウを知ろう
 すごいエンジニアに会おう
 自分が発信して勉強しよう
・参加方法
 MLに登録する
 機になる勉強会に行ってみる

■Oracle IoT Cloud Serviceお活用
ドローン

Oracle Internet Of Things Cloud Service
・Connect,デバイス通信
・リアルタイム処理、判定
・外部連携

IoTシステムとしてのドローン
・様々な分野
・安全に運用管理

ドローンの活用が期待されている様々な分野
・農業
・はし
・災害

ドローンデモ
・センサー:太陽光発電
。クラウドへ
・CPU ARM こーてっくす7
 Java SE8
 とれぶる バッテリー

・ゲートウェイ:Linux JavaSE8
 ビーコンデータ、デバイスIO ストリームエクスプローラー
 ゲートウェイ
   DNPにSAM:鍵
   →重要データの管理機能、データの暗号化、認証
 操縦者、SAM(機器認証)、運用面、盗難、解析できない(ICカード)
 OSGIでアップデート

・ドローンを安全に運用管理するための市区にを実現
 IoTシステムを安全に運用する技術

■Pepper+Oracle Cloud Platform
・PSソリューションと協働
・Pepper写真撮る
・タブレットでJSF(JET,Node.js)で写真撮って、Pepperへ
  なぜ4本指、Duke君は4本・・・(日本人の人、違う話する・・)
  Pepper君はでてこない。認識はして、伝えてくれたけど・・
・Pepper+Enterprise System / Java



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JJUG CCCに行ってきた! その5 Spring

2016-05-23 12:20:15 | JavaとWeb
5月21日 JJUG CCCに行ってきた!のつづき

What's new in Spring Framework 4.3 / Boot 1.4
 +
Pivotal Colud Native Approach

をメモメモ




自己紹介

Spring Boot
・フレームワークのためのフレームワーク
・組み合わされた状態で、すぐにアプリケーション開発できる
・Spring Boot ; Springチームが作ったケーキ

Spring Initializr
・Spring Bootアプリケーションを作る

Roadmap
・Spring5

・Spring Boot 1.4
 今回はちょっとした改善ばかり
 バナーのアップデート
  IntelliJ IDEA:サポート Myan Cat、画像もサポート
  Tweet your banner

 テストの改善機能
  テスト向け機能の改善
    test restテンプレート
    モック(そこだけモック化されたテスト)とスパイ
  組み込みサーバーを使わない便利クラス
    JPA,SpringMVC(HTML,Web),JSONスライス向け

 Spring4.3が使えるようになった
  2020年までサポートされる
  コンストラクタインジェクション
   →Lonbokと組み合わせた時

 CDIのインジェクションポイント

 複合アノテーション@RequestMapping,@Scopes
 @SessionAttribute

Spring5
 2017年以降の次世代
 依存ライブラリのメジャーアップデート
 リアクティブサポート
   ノンブロッキング
 →Reactor
   fluxとMono
 Spring Reactive
  fluxをやり取り

Spring Cloud
 分散システムのデザインパターンを提供
  →NetFlixが提供してくれている
 マイクロサービス
 サーキットブレーカー

クラウドネイティブとは(話半分に聞いてね)
・マイクロサービスは一部(DevOpsとかいろいろ・・・)
 コンテナ
 マイクロサービス→1つ1つの機能をデプロイ
    →CD→パイプライン

・なぜ必要?
 スピード&セイフティ ビジネスの加速(イノベーションの加速)
 Monolith
 SOA:データベースの依存関係
 マイクロサービス:自分たちの変更は自分たちの中で

・まずは12factorAppからはじめる
 コンフィグレーションは外出し
 ローカルファイルX

クラウドネイティブプラットフォーム
 Pivotal cloud foundry
  ・Spring Cloud Services
  ・Microservice with SCS

ConcourseCI
・すべてパイプライン(yamlで書く)
・タスクはステートレス(Dockerイメージを使う)

デモ

PCF Dev
・チュートリアル

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JJUG CCCに行ってきた! その4 JavaEE MVC

2016-05-23 02:22:42 | JavaとWeb
5月21日 JJUG CCCに行ってきた!のつづき

CD-4 ネクストStruts/Seasar2としてのJava EEアクションベースMVC入門 – MVC 1.0、Jersey MVC、RESTEasy HTML –

をメモメモ




#ccc_cd4で資料のありかはつぶやいている

■ネクストStruts/Seasar2としてのJavaEEアクションベースMVC入門
・今回の話
 Thymeleafを使っている
 ソースはGithubにある

・自己紹介

1.アクションベースMVCとは
 HTTPのリクエストに注目したフレームワーク
  Struts/Seaser2
 コンポーネントベースMVC 画面とJavaクラスが1対1
JavaEEのWebフレームワーク
 JSF:コンポーネントベース
 JAX-RS:アクションベースだがJSONを返す

アクションベースMVC
 MVC
 JAX-RSベース

JavaEEは仕様(実装はない)
 MVC1.0の参照実装はおざーく

Struts/Seaser2のアノ機能
 コントローラー
 バリデーション
 例外

ない
 画面構築がない理由
  新たなビュー言語は定義しない
  使いたいのを使え
 公式
  JSP Facelets
 Ozark独自
  Thymeleaf
 ViewEngineを使えば他も

JSP・Faceletの問題点
・JSP
  ビューとロジック交る
  XSS脆弱性
・Facelets
  全機能使えない(AJAX)
  Javascriptの相性悪い

Thymleafを使ってみよう
・ピュアなHTMLで賭ける
・デフォルトでエスケープしてくれる

MVC1.0でThymeleafを使う方法
pom.xmlにozark-thymeleafを依存性に加えるだけ

二重サブミット防止がない理由
・クライアントサイドで行うべき
  →自前で

準備
・Jax-RSの有効化
@ApplicationPath("/api")

基本的なコントローラーの作り方
 斜体 MVC1.0
 それ以外は、JAVAEEなどの
 戻り値 ビューのパス、拡張子必須

入力値を受け取るフォームクラス
  @inject Map+Iterator

渡された値の表示

バリデーション
 BindingResult

エラーメッセージの表示
エラーメッセージの記述

注意
 フォームバインディング機能はない
 @BeanParamは複数パラメータを1個のクラスにまとめただけ

フォームバインディングの実装

例外処理
 ExceptionMapperインターフェース実装クラスを作成
 @Providerを忘れずに
MVC Context
@controllerをつけるかつけないかで実装切り分けられる

・デモ

EE7におけるJerseyMVC
・Jax-RSの参照実装Jerseyの独自機能
・RestEasyJax-RSの独自実装

JerseyMVCの基本的な使いかた
・コントローラー戻り値Viewable
・コンストラクタの第二引数でビューに値を渡す

JearseyMVCでバリデーション
・コントローラーメソッドの中でバリデーションする

この方法の
・メリット
 ピュアなJAX-RS
 オレオレフレームワークを防げる
 リダイレクト

・RestEasyHTML
 RenderableをコントローラーメソッドがView
 WriterInterceptor
 コントローラーにもThymeleaf
 バリデーションはJarseyと同じ


4.その他の知っておくべき
・Jax-RSの知識が不可欠
・うらがみさんの資料 「処理パイプライン」
 JavaEE7徹底入門

まとめ

注意点
・JerseyMVC,RestEasyは標準ではない

デモ:おれおれMVC
ぷろばいだーくらすは、しんぐるとんなので、スレッドセーフではない点に注意

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JJUG CCCに行ってきた その1 アノテーション

2016-05-22 18:05:06 | JavaとWeb
5月21日JJUG CCCに行ってきたので、メモメモ

はじめ・・なのですが、まず、場所をまちがえた(>_<!)
で、遅れたので、入る会場を間違え、ルームG+Hに入ってしまった!
話は面白そうだったんだけど・・・
ごめん、とはいえ、やっぱり基調講演!と思って基調講演を聞きに行ったら・・・
・・幹事が・・お金の話・・・??
よくわかんないけど、自分には関係なさそうなので、
やっぱ、おもしろそうなルームG+Hに戻って話を聞いてきた。

ということで、結果、最後20分くらいしか聞いてないけど、メモメモ




・Findbugsみつからないことあり
・Annotation
 enumで宣言する(メタアノテーション)

・Annotationかけるところ8種類
 type
 annotation_type
 パッケージ
 method
 constructor
 parameter
 field
 ローカル変数
→全部宣言
型アノテーション

TypeAnnotation
 何のため:コードチェック
 →型を使っている所でも使いたい
 型の使用に対してのアノテーション
 JSR308
  Type_USE
  TYPE_PARAMETER
 をつけくわえる

@targetで定義
@readonly 変更不可能チェックができる
書ける場所
 instanceOf,キャストにも、配列の[]の前
 →ばかみたいにつかえる!
 例外 .class staticなメソッド、フィールド、import文、アノテーション

今とまっている

CHECKER Framework
 振る舞いをチェックしてくれる
 Eclipse,IntteliJ
 ~チェッカー

NULLness Checker
@Nullable,@Nonnull,@Pollynull

アノテーション いままでは宣言
TypeAnotation タイプに使える
 ただし、標準でない
CheckerFramework
 SE8(SE7でも使える)




ちなみに、基調講演は空いてたけど、
テスト自動化(ルームE)は満席だったらしい
G+Hは、ほとんど埋まっていた。

 

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SpringDI,MVCを使ってのデモなどを見てきた-JSUG勉強会その3

2016-04-24 21:35:57 | JavaとWeb
JSUG勉強会 2016年その3に途中から行ってきたので、
その内容をメモメモ

なお、途中に出てくるTERASOLUNA(テラソルナ) Server Framework for Java(5.X)
の開発ガイドラインは、

http://terasolunaorg.github.io/guideline/

で日本語、英語のHTML,PDFがダウンロードできる
(その開発ガイドラインの「2.3. はじめてのSpring MVCアプリケーション」が、ほぼデモの内容




■前半(途中から)
・SpringDIの紹介
Bean定義の方法3種類
・XMLconfig
 XMLスキーマ定義に従い
 古い時代から
 タイプセーフでない、実行してみないとエラーに気づけない
・Java Config
 タイプセーフ
 Javaで全部書ける:意識高い系に
・アノテーションConfig
 ふえちゃうとき

JavaConfig|XMLコンフィグ
------------------------
アノテーションConfig

XMLコンフィグ
  singleton,prototype
  property
DIコンテナ
 getbeanでもらう

Namespaceによる簡略化

アノテーションConfig

Beanの名前つけられる。

・SpringMVCの考え方
 M:モデル ビジネスロジック
 V:ビュー 画面
 C:コントローラー制御
・こういうリクエストが来たら、どのモデルを読んで、どのビューを表示するかを
 コントローラーに書く
 サーブレットが受け付ける
 DIコンテナ上
 サーブレットを作る
・MVC使うとDIコンテナが2つで親子関係
・Viewにいろんなのを使うことができる(今回はJSP)

・SpringBootでは
 設定を自動でやってくれる
 Viewはかわる。コントローラーは同じ

デモ
・STS使って
・疎通確認
  コントローラーの作成
   プロジェクトでコントローラー作成
    →コントローラーアノテーション
   リクエストハンドラ(リクエストマッピングアノテーション)
  コンポーネントスキャンの有効化
  JSPの作成
  デプロイする

・入力ページ作成
 フォームオブジェクト
   getter,setter
 コントローラーに登録
 JSPにテキストボックス form

・出力ページ
 出力用のリクエストハンドラ追加
 JSP~呼び出す

てらそるなサーバーフレームワーク アプリケーションガイドライン
 はじめての・・・に載っている

■後半(前半続き)
・Spring Security
 認証と認可
  認証:ユーザーが誰であるかを確かめる ID、パスワードなど
  認可:この人が、どういう情報にアクセスしてよいか ロール
・アーキテクチャ
  サーブレットフィルター基本
  Diコンテナで管理
 →フィルターの定義

・Step1サーブレットフィルタの設定
 Step2bean定義
   認証方式

デモ
・Spring Securityの設定
  ディペンデンシー追加
  フィルターの追加
  configファイル追加→セキュリティは独立しておいたほうがいい
  セキュリティ独特のネームスペースをよんでいる

・認証
  オー千ティフィケーションマネージャーの設定
  ログアウトボタンの追加

・認可
  ロール設定

■ほんとに後半
・アーキテクチャ
環境依存
 mavenベースでマルチモジュール→私見と本番きりわけ
  →プロファイルで切り替えもあるが・・
   warを共通、別にjarで環境依存

アプリケーションレイヤをどう切るか
 ビジネスロジック:どういう風に分割?
 コントローラーは画面遷移に徹する
 DAOも隠ぺいか

・機能的な話
 DBアクセス
  JDBCテンプレート
  Spring JPA
 SQL文を書くならMyBatis
 JPA,Hibernateのノウハウがあるなら

 入力チェック
  サーバーサイド
  クライアントだけでは
  Bean バリデーション、Spring バリデーター
   →Bean バリデーション

 セッション管理は割愛

・最後に

■連絡
・26日
・JSUGで1日カンファレンス

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Java EE 7を徹底的に入門してきた!

2016-02-16 09:01:22 | JavaとWeb
2/15にJJUGナイトセミナー「「Java EE 7徹底入門」の著者が解説! – Java EE 7特集」
に行ってきた!その内容をメモメモ




■JavaEE7徹底入門概要説明
講師:猪瀬さん
・自己紹介
・本日の趣旨 JavaEE7徹底入門の本をかいつまんで
・What is JavaEE
 JavaSE:きほん
 その上位概念
  企業システムのアプリ開発に必要な機能を包括したJavaのAPI概要(フレームワーク)
  39個の仕様から構成
・JavaEEの動作環境
  JAVAEEは仕様
  実行環境は、JAVAEEコンテナ、アプリケーションサーバー、、GlassFishなど
  アプリケーションは、設定ファイル等とまとめて、jar,war,earに
   アプリケーションサーバーに配置。デプロイ
   JVM
・JavaEE7
  JavaEEは96年から、
  ネガティブ先行→Struts,spring,Hibernateが台頭 2000年前半
  JavaEE5が転機:重かったものを簡単に
・JavaEE7徹底入門で目指したこと
  日本語で解説
  業務に使うところ
  完全にアプリとして動作するもの
  筆頭候補として位置付けられるもの
・構成
・出版後にあったフィードバック
  誤記が多い→正誤表
  章と章の間にばらつき
  JavaEEの日本語情報、増えましたね!
   次世代フレームワークを何にするか→情報量は重要なファクター
・事件
  てらだよしお退職
  レビューに層手以外の時間がかかった
  観光直前のGlassFishのバージョンアップ
・FAQ
  表紙が白い猫:金魚本
  1名女子:猫がいい(Tomcat)きれいなTomcat
・この後のタイムテーブル


■JavaEE7徹底入門 プレゼンテーション層の開発JSF
講師:加藤田さん
・自己紹介

・本章の概要
 JSFで開発したことある人 4割

・JavaEE徹底入門のもくじ
 →3割くらいJSF(150ページ)
 JSFの基本
 JSFに絡む各機能
  Facelet(タグライブラリ、EL)とマネージドビーン(スコープ)
  入力チェック、コンバーター、コンポーネントカスタマイズ、テンプレート、HTML5,AJAX
  国際化、認証

・サンプルアプリケーション、
  ナレッジバンク(ノウハウ入力)

・サンプルアプリでも
 画面遷移図
 アカウント登録で説明

・JSFとは何か?
  JavaEE7ではJSF2.2
・プレゼンテーション層のフレームワーク
  値マッピング・入力チェック:サードパーティ→JSFへ
・JSFの構成要素
  フェースレット
  マネージドビーン

・フェースレット
  画面のレイアウトを記述するHTMLベースのテンプレートエンジン
  JSF2.0からJSPの代わりに使用
 フェースレットとJSPの違い
  XHTML→記載厳密
  スクリプトレットが記載できない
  文字列のサニタイジング
  NULLの表示
  テンプレート機能(Struts:tile)
 記載例
 フェースレットの構成要素
  フェースレットタグライブラリ
  EL(えくすぷれっしょんらんげーじ)
 h:がついているものは、HTMLと対応
 f:などある
 EL式 値のヒモづけ

・マネージドビーンとは
  フェースレットとバインドするJavaのクラス
  入力値の保持やボタン押下時の処理
 マネージドビーンの構成要素 
  スコープ
  バインドする値の保持
  ビジネスロジックの呼出し
  画面遷移
 JSF getter,setter必要

・フェースレットとマネージドビーンの処理イメージ
  コンポーネントを主軸にコードを作成:コンポーネント指向

・本書では触れられなかった話
 JSFのより詳細な機能
 JavaEE8(JSF2.3)
 MVC1.0
 JSF関連ライブラリ

・JSFのより詳細な機能
  カスタムコンポーネント
  イベントハンドリング
   Value-Change-Event:値を変更してボタンを押したら
   ActionEvents
  ビーンバリデーション
   グループ化機能
  EL(EL3.0で追加)
   Lambda式
   文字列連結オペレータ
・JavaEE8(JSF2.3)
  追加予定の機能
   WebSocket対応f:socketでJavascriptをなるべくすくなく
   マルチフィールドバリデーション
   DataTime
   EL式暗黙オブジェクト
   マネージドビーン等への・・・
・MVC1.0
  アクション指向フレームワーク
  JavaEE8で導入
  JAX-RSを拡張
  ビューはFacelet,JSPをサポート
   タグlibのサポートない
  名前が直接的だけど
 実装例
  JAX-RSのアノテーション
  @Controller

・今後のプレゼンテーションの選択肢
  JSF
  JAX-RS+クライアントサイドフレームワーク(AngularJS,Reactなど)
  MVC1.0+Web-Components?
・JSF関連ライブラリ
  コンポーネント系
  フェースレットの画面をリッチに構築するライブラリ
    PrimeFace
  ライブラリ系
    JSFの開発を容易にするライブラリ
     OmniFace,PromeFace
・PrimeFace
  Ajaxを使用したページレンダリング   
 OmniFaces
  JSFの開発をサポートするユーティりティライブラリ
  個人レベルのライブラリ

■ビジネスロジック層の開発 CDI&EJB
講師:羽生田さん

・自己紹介

・排他的な関係ではない
 CDI or EJB→排他的? で、どっちがよいの?
 実際には、組み合わせで解決するのがよいのかなあ

・いいわけはここまで
・書いてないこと中心

・書いてあること
 CDI
  インジェクション、型解決、定義
  イベント処理、捨てれpタイプ、プロデューサー・ディスポーザー
 EJBの使い方
  この先EJBまだ使っていいんだ米という行間

書いてないこと
 CDIコンテナの取り扱い
 @ConversationScoped
 CDIにおけるトランザクションの取り扱い

おさらい
・CDIとはなにか
  DI:層をくっつける接着剤
  必要なオブジェクトを必要なタイミングで提供
  スコープ定義
   POJOにスコープ定義さえあれば@Injectionですきなところでインジェクション
   5つ:どこで消えるか
     Request
     View
     Session
     Apprication
     Conversation:生き死にを定義できる

・おさらい
 CDIは簡単べんり
  EJBと非尾書くすると実装が簡単かつリソースメリットがありそう
  EJB;プール使い、なかなかきえない
  CDI:使いたい個所でぱっと使ってさっと消えるのが理想
 層ってなに?
  CDIの適用範囲:広い

・はじめましょう
 CDIコンテナ
  良くも悪くもWeld。猫も杓子もWeld
  アプリケーションサーバで採用しているWeldのバージョン押さえておかないと死ねます
  GlassFishとWeb logicのWeld採用バージョン
   →GlassFishが先行している
 CDIコンテナのアクセス用API

 CDI
  CDI.current();
  BeanManagerの取得元として利用
  CDI.select(クラス).get();プログラマチックルックアップ  
  CDI.current().toString() Weldと帰ってくる

 CDIProvider
  CDI#current();の裏で呼び出される

 BeanManager
  ポータブルエクステンション(Chapter#11)
  特定のCDI限定詞を持つCDIビーンについての情報取得
  CDIビーンの操作
  業務アプリで使いすぎるのは注意必要
   フレームワーク化→障害時に追いかけられない

 CDIコンテナ::LifeCycleEvents
  ・CDIコンテナ拡張機能の1つ
  ・各種イベントをフックできる
  ・SPI
  ・注意:デザパタ、フレームワークに乗せたくなる人は注意:Weldの実装変わったら、どうなるの?
  ・CDIコンテナの動きは手に取るようにはわからない
  ・大規模開発:インジェクションが死ぬほどあってわからないとき、どうやって制御
    →LifeCycleEventsを使って生き様死にざまがわかるように

 @ConversationScoped
  begin()→end()タイムアウトある
  明示的に

 トランザクション
  JTA1.2(JSR907)
  目指せEJB CMTからの脱却
  みんなそんなにEJBが嫌いなのか?
  javax.tramzactionパッケージ
  @Transaction
   トランザクション境界の設定
   クラスとメソッドどちらでも
   JTAなのでCDIビーン
  @TransactiopnScoped
   現在有効なJTAトランザクションの実行に合わせたライフサイクルを持つもの

 まとめ
  CDIで何でもかんでもって設計もどうかなって思う
  CDIが本格進出してきたことでフリーダム
  CDI+EJBで
   なやまないで・・・(DBアクセスはEJBとか)
  多量のインジェクションはやめましょう

 感想など


■バッチアプリケーションの開発jbatch

・自己紹介は割愛

・本日話す内容
  Jbatchってなに
  構成要素機能(ジョブ、ステップ、補助機能)
  本書に書いていない

・What is jbatch
 JavaEEにおけるバッチ処理の標準
 Version1.0としてJavaEE7から登場
 JSR-352
 Spring Batchから多くを継承

・なぜjbatch
 Javaでバッチを組む4つの方法
  プロセスとして実行
  自作スレッドとして実行
  APサーバーでサーブレットとして実行
  jbatchを利用
  spring batchりよう

 プロセスとして実行
  シンプル
  JVM起動時間のオーバーヘッド、CPU食う
  APサーバーで他で動く部品の共有
 自作スレッドとして実行
  スレッド→プロセスに比べ早い
 サーブレットとして実行
  あまりよくない
   APサーバーの部品共用はできるが
     暴走した場合
     きっかけがHTTP経由→半日かかるものとかは?
 jbatchとして利用
  ○一定の理由ある

・jbatchの構成要素
  ジョブとステップ
  ジョブXML
  ステップ:処理の本体
 ジョブXML
  プロパティ書ける
  ステップ要素を書き足していく
   子要素:バッチレット
 ジョブとステップの分離
  古くはホスト時代にさかのぼる→JCL
 jbatchの構成要素
   ジョブ:処理の順序制御
   ステップ:実装のテンプレート
   補助機能

 ジョブの構成要素:XMLタグ軍
  フロー
  スプリット:並行(分散)実行
  ディシジョン:前の結果を拾って、どこへ行くか
   ストップ、エンド、・・
 JOBXMLのroot要素
  XSD指定するとエディタが補完
 ジョブ全体の会誌、中断、再開
   ジョブオペレーター
   ジョブオペレーターの呼出し方法
   JAX-RSを用いた起動方法

  エラーハンドリング
   リトライ
   スキップ

 ステップ
  チャンク型とバッチレットの2種類
  チャンク型
   リーダー、プロセッサーライター
  バッチレット
   単発コマンド
  チャンク型のステップ
   実装のテンプレート

 補助機能
  ジョブリポジトリ
   APサーバー配下、記録残る
  リスナ
  コンテキスト
   JobContext,StepContext
  メトリック

 本書に書いてない話
  ステップ・パーティショニング
   ステップの並行処理
  入出力ファイルをCSVにした理由
   JSONP
   リスタート機能の紹介→読み込みに失敗したとき
    CSVのほうが、親和性高い
  ここがへんだよjbatch
   チャンクでジェネリクスが使えない
   終了ステータス、バッチステータス、ジョブとステップで共用?
   flow/sprit単位でのプロパティが指定できない
   glassfishの参照実装で動かない機能

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする