最速でJava EE 7 Webアプリを作る – 2014 Java EE Advent Calendar

Will be translated in English soon. Sorry for inconvenience.

この記事は2014 Java EE Advent Calendarの12月24日分になります。キリスト教徒ではないのですがメリークリスマス。

今年はJava EEに関する大きな発表が無かったのでネタ的に困る訳なのですが、個人的な「温故知新」ブームに乗っかり、こんなのをやってみることにします。

Slide1はい、超スタンダードなJava EEの使い方です。勿論、Java EE 7で。残念ながら商用サーバーのEE 7対応はまだですが、来年は対応するという話を聞きますので、今のうちに慣れておきましょうということで。

ただ作るだけでは面白くないので、できるだけ最速でイチから手順を追って作っていくことにします。勿論NetBeansの自動生成機能を駆使します。また、お仕事でもそのまま使えるようなコードで、という制約付きです。Java EEはめんどくさい、という意見を聞きますが、そんなことないよ、という事を証明するべく、こんな挑戦を敢えてクリスマスイブにやってみるわけです。暇人と呼ばないで(笑) ※ほんとは正直忙しすぎて死にそうです

さて、細かい前説は抜きにして、最速で順番にやっていきましょう。

今回の環境です。本番でもそこそこ使えるようなものを選んでみました。OSは何でもOKですね。わたしは普段使いのOS X Yosemiteを・・・と書いていたのですが、前の記事の通り個人PCをWindowsに戻してしまったので、途中まで出来ていたものをWindows 8.1 64-bitで再度やり直しました。Realforce 87Uが快適すぎるので助かりました。

なお、私は普段お仕事でも家庭でも英語環境で使っているのでスクリーンショットや用語は英語ですが、推測できる範囲だと思いますので適当に読み替えて下さいませ。

  • JDK: JDK 8 の最新版 (この記事では JDK 8u25)
  • IDE: NetBeans 8 の最新版 (この記事ではNetBeans 8.0.2)
  • App Server: GlassFish 4 の最新版 (この記事では GlassFish 4.1)
  • Database: MySQL 5.6 の最新版 + MySQL Workbench の最新版 (この記事では MySQL 5.6.22)

1. データベース

まともな企業システムをターゲットにしているので、データベースがあって然るべきでしょう。DB処理はJava EEの華です。ここをすっとばしたJEEの説明が多い気がするので、ここに改めてまとめておきます。

エンタープライズ系のプログラマーがデータベースのインストールすら出来ないというのは恥ずべき事なんじゃないかなと思うのですが、何となく日本のWeb系の流行がNoSQLとかBuzz方面に流れがちだ、ということで、特に若手の育成面を危惧しています。地に足をつけて物事を考えたいですね。流行は流行で別途追っかけるとして。

1-1. データベースの準備

こういうのは依存関係の深い場所から作っていくのが正しい在り方です。ですのでまず、データベースからですね。Oracle Databaseが所謂スタンダードかなと思いますが、フリーのXEがOS X用に出ていないので、ここでは涙を呑んでMySQLをインストールします。インストーラーを落としてぽいっと入れれば終わりです。

http://dev.mysql.com/downloads/mysql/

CUIで諸々やるのは面倒なので、MySQL Workbenchも入れてしまいましょう。Windows版だとDeveloper Defaultを選べばいいです。以下Windows版をメインに書きますので、OS XとかLinuxの方はユーザーアカウント等はインストール後にMySQL Workbench等で個別に設定する必要があります。

000001

インストール途中でアカウントを作成します。今回のアプリ用の「Advent」ユーザーを作りましょう。めんどくさいのでパスワードも同じにしましたが、外部から接続されると厄介なので接続元許可をlocalhostに制限しておきましょう。

000002

rootもここで設定しておきましょう。この辺はWindows版便利ですね。

000003

あとはデフォルト値でホイホイ進めれば、最後にMySQL Workbenchが起動します。rootの接続が出来ているので、これをクリックしましょう。

000004

最初にスキーマを作ります。「Create New Schema」を選択します(+の付いたデータベースアイコン)。名前は「advent」でいいですかね。CollationはServer Defaultで良いかと思います。

000005

「Users and Privileges」で「advent」を選択し、(開発用途なので)全権を「Select “ALL”」で選んでおきましょう。終わったらApply。※当然ですが本番運用でこんな事はしないで下さい。

000006

これでadventユーザーがadventスキーマを使えるようになりました。これでこのMySQL Workbenchの役目は終わりです。これ以降はNetBeansで作業することにします。そっちが楽です。

 1-2. スキーマの作成

さてNetBeansを起動して、Serversタブを開いて、今回作ったスキーマを接続しましょう。右クリックして「Register MySQL Server」を選択して登録しましょう。接続情報は上の通りですね。分からない方は以下を参考に。

000008

成功したら「advent」の接続が登場します。これでようやく全ての作業開始です。長い・・・

000009

では今回のテーブルを作りましょう。「Advent」スキーマをを開いて、Tablesで右クリックして「Create Table」。以下のような感じで。ぶっちゃけここはお任せなので、めんどくさい人は1カラムでもいいでしょう。

000010

  • Customer
  • ————-
  • CustomerID BIGINT PRIMARY KEY
  • Name VARCHAR(100) NOT NULL
  • PostalCode VARCAR(10) NOT NULL
  • Address VARCHAR(200) NOT NULL
  • Phone VARCHAR(30) NOT NULL
  • Note VARCHAR(1000)

これでデータベース側は準備完了です。

  1. 2. サーバーサイドを作成する

さて、ようやくJava EEです。以下の大半の処理はデータベースを以下に効率的に処理するかという観点になってます。これはCOBOLシステムに代表される「コンテナー管理型システム」の現代版としてJava EEが元々設計されていることに由来します。超高額で場所を取るホストシステムが不要であり、家のPCで気軽に無料でプログラミングできるJava EEがある現代は恵まれた世界だなと思います。

今回作成するパッケージはは3つ。CRUDを行うDAOと、ビジネスロジックを記述するLogic、および、データベースの写像としてのEntityです。LogicとDAOをごっちゃにして作る人がいますがやめたほうがいいでしょう。自動生成がメインであり、JPQLやCriteria Queryの記述がメインのDAOはあくまでDAOとして分けておかないと、数年後に破綻する羽目に陥る気がします。

Slide2

なお、以下NetBeansを使っていますが、一点だけお勧めの設定変更があります。デフォルト設定ではフォントがMonospacedになっていて非常に見辛いので、Courier NewやConsolaなど英字等幅フォントにに変更すると非常に見やすくなります。Tool > Options > Fonts & Colorsからどうぞ。

2-1. サーバーサイドプロジェクトを作成する

NetBeansからプロジェクトの作成で、Maven > Web Application を選択します。ちなみにJava EE 6からWARにEJBを入れられるようになったので、今回もそれを活用します。必ずMavenのプロジェクトを選択して下さい。ここで間違って後で地獄を見る系の人が多いです。もうNetBeansのオリジナルプロジェクトファイルは廃止していいんじゃないかなと思うのですが・・・

000011

プロジェクトは適当に。「advent-jee7」としておきます。

000012

Application ServerにGlassFish Serverを、Java EE Versionには「Java EE Web」を選択します。ちなみにこれはWebプロファイルであり、Fullプロファイルをここで選択できないのはNetBeansのバグですね。

000013

ここで 一旦Finishして、生成されたプロジェクトファイルを手作業で修正します。プロジェクトのProject Files > pom.xmlを開き、「javaee-web-api」を「javaee-api」に変更して保存し、プロジェクトをビルドすれば完了です。

000014

これを・・・

000015

こんな感じに。これでEJBがWAR内でフルに使えるようになります。ここから開始しましょう。

2-2. 自動生成でJPA系クラスを作成する

DB接続系の処理ですが、Java EEだとJPA一択です。元ネタのHibernateと一緒なので、大体誰でも理解できると思いますが、要は「テーブルの1行=Javaクラスの1インスタンス」で処理するだけの単純明快な標準フレームワークです、と書けばいいでしょうか。

業務システム構築では、こういうところをセコセコ手作業してたらやってられないわけですので、Databaseのテーブルからちゃっちゃか自動生成してしまいます。

プロジェクトで「New > Other」から、「Persistence > Entity Classes from Database」を選択し、MySQLの接続を選択して、JNDIデータソース名「jdbc/advent」を指定して、上で作成した「Customer」テーブルを選択します。あとはデフォルト値で進めれば・・・

000016

000017

000018

000019

000020

はい、DB接続設定が含まれたpersistence.xmlと、「Customer」テーブルに対応付いた「Customer」クラスが作成されます。簡単ですね。これぞJava EE。このクラスだけではデータベースにCRUDできませんので、次にDAOを作成します。これをEJBで作るのがポイントです。ここで間違える人が多いですが、選択肢はこれしか無いと思った方が良いのではないでしょうか。

「New > Other」から「Enterprise JavaBeans > Session Beans For Entity Classes」を選択します。

000021

Entity Classesに上で作成したEntityが出てくるので、選択します。

000022

パッケージ名の後ろに「dao」をくっつけてあげましょう。

000023

完了するとEntity Managerを内包した「CustomerFacade.java」という名前のEJBが自動生成されます。これを使ってCRUDするわけです。なお、このEJBは「AbstractFacade」という名前のスーパークラスを継承しており、そこにCRUDの実装がありますので、基本処理を変更したい場合はここをいじります。ただ、二つ目以降のDAOを作成した場合、同じようにこのスーパークラスを継承するように自動生成されるので、注意が必要です。

000024

よく見たらEntityのクラスがプロジェクトパッケージの直下にありました。これは生成時のオプション指定忘れなので「entity」とおしりにくっつけます。各種処理はNetBeansがやってくれます。

000025

2-3. ビジネスロジックを作成する

はい、最後にビジネスロジックです。当然ながらEJBで作ります。

ビジネスロジックは自動生成なんかできないので、普通に作成します。「New > Other」から「Enterprise JavaBeans」、名前に「CustomerLogic」、パッケージを「advent.logic」にして生成。

000026

頭に「@Stateless」と書いてあるだけの普通のPOJOができます。これが今時のEJBですね。単純バンザイ。

000027

さて、とりあえず動かすためにはデータが必要ですので、今回はまずデータ登録系の処理をここに追加しましょう。こんな感じです。ここには普通にDAOクラスを@EJBでインジェクトし、そこで該当メソッドを呼び出すだけになります。

000028

なんというか、拍子抜けですね。データベースを含むトランザクション処理はEJBコンテナー側が全自動でやってくれるので、これが正しい姿です。このメソッドが呼ばれた瞬間にJTAトランザクションが開始(BEGIN)され、正常終了するとトランザクションが完了(COMMIT)されます。例外が発生した場合は取り消し(ROLLBACK)ですね。エンタープライズ系処理はこうでなくてはいけません。COBOLの正統後継者たる所以です。

はい、バックエンド系処理は終わりです。データベース系設定作業がくそめんどくさい割に、バックエンド処理は爆速で終わったかと思います。

  1. 3. Web画面作成

最後に画面側です。バックエンドを呼び出す画面についても省エネ爆速で作りましょう。作るファイルは三つ。FaceletとBacking Beanは二つでひとつのセットです。あとは完了画面だけ作ります。最低限動く事を確認するだけの構成にします。

Slide3

3-1. JSFを使うためのプロジェクト設定

NetBeansでMaven WARプロジェクトを作った場合、初期設定でJSFが有効になってません。これでは困るのでちょいと設定します。プロジェクトを右クリックしてFrameworksからJavaServer Facesを選択します。

000029

また、JSFの画面ファイルであるXHTMLが簡単に起動するように、URL Patternも「*.xhtml」に変更しておいて下さい。じゃないと全てのリクエストに対して/faces/とかつけなければならず、実態のファイルの配置とずれてしまうという困ったことがおきます。

000030

JSFを有効にしたら、index.xhtmlファイルができます。こいつが新しいトップページになりますので、古いindex.htmlは削除して下さい。ここまで全自動でやって欲しいなぁ・・・余計な作業ですね。

000031

3-2. Backng Beanの作成

そろそろこれまで作ってきたものを一度動かしてみたい気になりますが、最速を目指すこの投稿ではスキップして、一気にBacking Beanを作ります。ASP.NETのコードビハインドみたいなやつです。画面と一対一で原則作ります。

普通にクラスを新規作成します。アノテーションで@Namedと、@ViewScopedをつけて下さい。要注意なのは、「import javax.faces.view.ViewScoped;」側を使って下さい、ということです。同じ名前のがjavax.faces.beanにもありますが、こちらを使うと動きません(こちらはJava EE 6以前(JSF 2.1以前)用)。

000035

残りはEntityに定義したものをそのままフィールドに定義してしまいましょう。あとはGetterおよびSetterを作る必要がありますが、そんなものはNetBeansに作らせましょう。右クリックして「Insert Codes…」で「Getter and Setter」ですね。日本語版だと妙な名前になってた気がしますが、こういうプログラミング系は英語版を使うと変な所で悩まなくとも済みます。

000036

最後にボタンを押したときのアクションメソッドを作ります。下記のような感じです。Entityに画面の中身を詰めてEJBに投げるだけ。簡単すぎる。

注意点としては、CustomerID列についてはデータベース側で自動採番されるのですが、EntityのBean Validationの関係上、NULLが許容されないため、とりあえずLong.MIN_VALUEを入れておきました。0でも何でもいいんですが、INSERT時に正しい値に置換されますので気にしないで下さい。

000046

ちなみにここでの考慮点としては、「EntityをそのままBacking Beanのフィールドに設定した方が早いのでは?」というFAQがあります。が、分けた方が良いでしょう。画面で入力する値は本質的に全て文字列ですが、DB設定の型は様々です。入力値のチェックも考慮した場合、すべてString型で定義したBacking Beanと、本質的な正しさを追求すべきEntityは分けた方が良いでしょう。

3-3. Faceletの準備

はい、では最後にFaceletをいじくりましょう。index.xhtmlを開きます。

000032

なんというか、丸ごとふるくさい構成になってますので、HTML5にちょいと書き換えて、不要なタグを削り、JSF 2.2で必要となるネームスペースを追加します。こんな感じです。「xmlns:jsf」というのを追加する必要があります。URLそのものはNetBeansが自動補完してくれます。これが無いとJSFの特殊タグが使えないのです。要注意。これもNetBeans側のテンプレートを更新して欲しい気がしてます。自分でContributeしろと云われそうですが。

000033

はい、とりあえず画面側はできましたので、ここで一回起動しておきましょう。メニューバーの右矢印ボタンを押すと、ブラウザーが起動するかと思います。下記の画面が出たら、バックエンド側のEJBやJPAも正常に動作しています。もう9合目です。もう一息。

000034

では最後にBacking Beanと結合していきます。当たり前ですがFaceletでもコード補完が動きますので、ホイホイやっていきましょう。

000038

完成版はこんな感じです。JSF 2.2からはHTML Friendly Tagsといって、ふつうのHTMLに対してjsf:valueやjsf:actionを追加で入れていく感じになっています。これならば誰でもできますね。昔のh:inputTextとかを忘れて思い出せずイライラするといった非生産的な状況とはおさらばです。

000047

注意点としては、form要素に対してjsf:idを(名前は何でも良いので)入れておかないと動かないという点だけでしょうか。まあめんどくさいのでformとか何とか入れておいて下さい。

最後に完了画面も作っておきましょう。index.xhtmlと同じ場所に「thanks.xhtml」をおいて下さい。index.xhtmlをコピーして削るのが良いかと思います。こんな感じ。

000040

終わったらもう一度実行ボタンを押しましょう。うまく行けばこんな画面が出てくるかと思います。

000041

テストをやらねばなので、とりあえず嘘情報をつらつらと・・・

000042

入力してボタンを押したら完了画面が出ておしまいです。そういう作りにしたので・・・

000043

データベースの中身を見てみましょう。正常に登録されてるかな・・・? Servicesタブからcustomerテーブルを開いて、View Data…です。

000044

正常に登録されていました。一発で動いてホッとします(笑)。

000045

はい、これでおしまいです。完了。この記事はスクリーンショット等を取りつつ書きつつやったので2時間ちょい程度かかりましたが、そんなことをしなければここまで最速で10分から30分くらいでしょうか。データベースの設定を一度やっておけば、あとは上記2.以降をやればいいので、10分くらいでできるかな。Java EEも簡単になりましたね。初代J2EE 1.2時代のめんどくささと比較しても、雲泥の差です。最初からこうあってほしかった(笑)。

Java EEのこの安定感は素晴らしいですね。繰り返しになりますが、上記の作業手順や生成方法、生成されたファイル群は、本物のお仕事でもそのまま使えるものです。今回は画面遷移や入力値チェック等は省きましたが、その辺は別記事等でフォローしたいなぁと思っています。

なお、上記のコードについてダウンロード提供しようと思ったんですが、生成されたコード群がアホみたいに小さいので、是非ご自身でやっていただきたいなと考えまして一旦見送ります。自分でタイピングしないと覚えないので、30分時間を作って是非やってみてください。※ご要望があれば上げます。

次回の2014 Java EE Advent CalendarはArshal Ameenさんの記事になります。最終回ですね。

Renewed My PC for 2015

IMG_5761

Recently I used with Apple Macintosh, with OS X. And I decided to move from OS X to other OS again. There were many reason for moving, but most biggest reason was for liberty of my computing environment.

Actually OS X is the better environment for both daily usage and programming, but not for gaming and some free usage with many external devices. I love the Mac Pro Xeon tower type, with some external slots and free of expanding, but nowadays it renewed with trash-typed closed platform.

I decided to design my next PC with latest parts, with Intel devil’s canion and Nvidia GeForce GTX 970, and some excellent parts for my 2015 style as below.

  • Case: Antec P100
  • Motherboard: ASUS Z97-K
  • CPU: Intel Core i7 4790K 4GHz
  • CPU Fan: SCYTHE Kotetsu
  • RAM: CFD 16GB (8GB x2)
  • Video:  ASUS Strix GTX970
  • Power Supply: Seasonic SS-660XP2
  • SSD: Crucial MX100 256GB
  • HDD: Hitatchi 2TB
  • Keyboard: Topre Realforce 87U SE170S
  • Mouse: Logitech G302
  • OS: Windows 8.1 64-bit, Oracle Linux 7 64-bit
  • Monitor: Iiyama Pro Lite XB2374HDS 23-inch

Unfortunately the PC parts prices are now increasing due to decrease Japanese Yen JPY rate compare with USD, so decided to get within November. Saved over 10,000 JPY by early purchasing before increasing prices.

Thanks for the silent type PC case and video card, I got a exteremely silent PC in normal desktop usage. I cannot hear any noise except for the HDD very small clicking sounds. With some latest 3-D gaming, the video card’s fans are start turning with very small noise.

Additionally the new keyboard Realforce special silent model (SE170S) is good for my typing speed and noiseless confortable desktop works. I think this keyboard is the best PC keyboard in the world so far. I want the its PS/2 version for true n-key rollover, but current USB version is almost enough for my normal desktop computing.

The new PC is connecting with my old Victor amplifier and small Tannoy speakers, and listening HD audio with ALAC format. Thanks for the silent environment, this PC is also good for the audio listening.

I satisfied with this new PC for multiple usage, especially for my home programming usage, and now I’m trying latest 3-D heavy PC games which I cannot tried in my old MacBook Air.

IMG_5762

My Interview of Nikkei Computer Aug 7th, 2014

Nikkei Computer 2014-08-07

http://itpro.nikkeibp.co.jp/atcl/ncd/14/072900011/

Today one of the most largest share of the Japan computer magazine “Nikkei Computer” Aug 7th, 2014 issue was published. Main theme of this issue is the EOL of each libraries and software.

This first special pages are edited by my interview, which was held on July. The discussion point is the Struts 1 EOL issue, which was  almost same theme as the my session of Java Day Tokyo 2014.

If you can see this issue, please check it. Unfortunately, this articles are written in Japanese only. Of course, the “Nikkei Computer” magazine is also for Japan only :-(

My JavaOne 2014 and Oracle OpenWorld 2014 Sessions

Happily announced that my call for proposal for JavaOne 2014 and Oracle OpenWorld 2014 were approved successfully. Now I’m one of a session speaker of them. Amazing.

Java EE 6 Adoption in One of the World’s Largest Online Financial Systems [CON2789]
https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=2789

Case Study of Financial Web System Development and Operations with Oracle WebLogic 12c [CON2820]
https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=2820

My first time attendance for JavaOne conference was 2000. 14 years ago. Very huge conference, over 30000 people attended, held in Moscone north and south completely. The key note speech was held in all connected Moscone center south rooms. The surprise guest speaker was Steve Jobs, with performing not released Mac OS X 10.0 development version with J2SE 1.2 Swing application. I was so exited about the brilliant future of the Java programming language and enterprise usage.

At that time I learned many of the J2EE 1.2, which was renewed from Project JPE at the end of 1999. I’d already worked with BEA WebLogic 3.0 – 5.1 in Japan, and realized that the differences between the J2EE specs and the implementations. And one of my dream was to have a session as a speaker for J2EE technical information sharing here.

Now my dream come true.

In this sessions I’m going to share the details of my designed Java EE 6 applied financial enterprise systems in Rakuten in Japan. Java EE has huge potentials for the mission critical enterprise systems, and you can learn how to use the EE specs and WebLogic for it.

Now I’m happily making the slides for speaking right there. Come and join us. Happy programming.

Hakata Iwai-Medeta Song Translation

I asked the local song of “Iwai-Medeta” in Fukuoka Hakata area from non-Japanese friends. I searched the translation to English but not found.

The “Iwai-Medeta” (in Japanese 祝いめでた) is the song for the brilliant day’s song, especially for the business agreements sign for the local enterprise peoples. This song also shared as the theme song of the “Hakata Gion Yamakasa” in Kushida shurine in Hakata.

Anyway, I translated the “Iwai-Medeta” in English as below. Almost all means are for the long prosperities for the singing peoples.

The original song was made with unknown situations, and we don’t know the details of the meaning. I tried to translate with the standard feeling of a normal Japanese. But if you have any questions or suggestions, feel free to contact me.

The video is available in the YouTube here. http://youtu.be/d9_z-8ZG7Ec

Celebration and Joious of Wakamatsu the God, Wakamatsu the God
Iwai-Medeta no Wakamatsu-Sama yo Wakamatsu-Sama yo
祝いめでたの 若松様よ 若松様よ

 

Growing not only the branches but also the leaves.
Eda mo Sakayu-rya Ha mo Shugeru
枝も栄ゆりゃ 葉もしゅげる

 

Let’s chant, and chant, and chant, and chant. Ya, we don’t have no choice!
Eisho-e Eisho-e, sho-e, sho-e A, Shonga-ne!
詠唱ェ 詠唱ェショウェショウェ ァしょんがね!

 

Invite your neigborhoods Ya, we don’t have no choice.
Arewai Sasoe, Sasoe, e, Shonga-ne-e.
アレワイ誘え誘え ェしょんがねー

 

Let’s have our clap hands sign!
Te-Ippon!
手一本!

 

Ready, (clap, clap) Again, (clap, clap) Three times with celebrating (clap, clap…, clap)
Iyo-h, (Pan, Pan) Ma Hitotsu, (pan, pan) You-to San-do (pa-pan, pan)
ィヨーォ (パンパン) まひとつ (パンパン) 祝うと三度 (パパンパン)

How to Move from J2EE from Java EE in Java Day Tokyo 2014

Last day I joined in Java Day Tokyo 2014 as a speaker and had this conference session “How to Move from J2EE from Java EE” as below. Uploaded in SlideShare.

The background of these slides and my presentation theme was for the poor enterprise systems which is not improved and keep going with J2EE 1.4 and many non-standard open source frameworks.

The big picture of Java EE – formerly J2EE is the standardization of the enterprise development API for any application servers, and the theme was not changed since the born of Java (2) platform, enterprise edition (J2EE). I strongly agreed these movement at the start of J2EE, and not changed in this time.

Many enterprise engineers still don’t know the latest version of JEE, due to the limitations of each company’s original standards – many standards are still based in J2EE 1.4. And the older standards applied systems are now turning into the “too old to migrate” systems.

As a fan of Java EE specifications, I want to share how to migrate to latest Java EE 7 standards from older ones. I hope these slides are for your system improvements and Java EE applied system increasing.

Happy Java 8 Release

As you might know, the Java 8 was released yesterday, and I tried to use both my OS X and Windows environment with new NetBeans 8 and GlassFish 4.

Including many useful improvement in 8, the new edition of the common platform is the best one ever. And please be careful that any new software has some of uncertain bugs. If you plan to apply 8 to your production environment in the future, be careful to new information of bugs or vulnerabilities of this new island.

If you are a good Java operator, please make sure that the Java VM environment was completely changed and some well known JVM booting options was deleted and you must learn a lot of new philosophy of imported new VM functions from JRockit from BEA WebLogic (by Intel formerly).

If you are a nice programmer or software architect, please be careful of your favored libraries or app servers compatibilities of 8. Especially almost all commercial licenced app servers, including WebLogic, WebSphere, JBoss or like that, the requirement JDK might be still with 7u51, and please avoid the force applying 8 to them in your production environment. It might stak in booting time or now working correctly. Ask to the support when you can apply 8 to your platform.

Anyway, the new major version platform release is really special for us and welcome to our new future platform. And I want thanks so much for all guys related to new JDK releasing. Congratulations!

Updated my twitter account name to @HirofumiIwasaki

I’m considering about the changing my account name of twitter. Finally changed to my real name @HirofumiIwasaki.

The mean of @rockcape, my previous account name was from my family name ‘Iwasaki’, but it was my misunderstanding. Iwasaki (岩崎) means ‘rock cliff’ or just ‘cliff’, so the account name must be rock cliff or cliff, but already occupied.

So I decided to back to my original name directly. Little bit difficult to call my name in English style, but this IS my name as one of a Japanese.

By the way, I changed my follower from Japanese account to English one, and realised that there are few of the Japanese news accounts. Almost all guys around the world cannot recognise the incidents and problems of the Japan with these sad environment.

Now I’m trying to change my business and programming style to English, and also trying to twit in English. Hope may people in Japan twit in English for world wide, and improve the sad situation and more recognised the Japan by oversea guys as well.

How to Install GCC 4.8 with NetBeans in OS X 10.9

Screen Shot 2014-02-15 at 11.39.21 PM

I tried to update GCC environment in my OS X 10.9 with NetBeans 8 beta environment to use C++11 new features, including shared pointer. There’s some useful information to update using MacPorts, and this article is just my memo.

1. Install Command Line Tools for Xcode

MacPorts’ policies of supporting GCC is as follows, and it must be installed separately from apple site. If this tools not installed, you’ll be failed in the compile operations with some header missing messages.

MacPorts migration policies
http://trac.macports.org/wiki/Migration

Download command line tools for Xcode
https://developer.apple.com/downloads/

2. Install MacPorts and GCC 4.8

Next, install MacPorts normally, and self update to refresh latest package information to your local repository of MacPorts.


$ cd /opt/local/bin
$ sudo ./port self update
$ sudo ./port sync
$ sudo ./port install gcc48
$ sudo ./port install gmake
$ sudo ./port install gcc_select

3. Set the Environment Variables

Set the GCC standard to 4.8 as follows.


$ sudo ./port select --list gcc
Available versions for gcc:
mp-gcc48
none (active)
$ sudo ./port select --set gcc mp-gcc48
Selecting 'mp-gcc48' for 'gcc' succeeded. 'mp-gcc48' is now active.

And set the environment variables to use as the standard gcc as below.


export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export MANPATH=/opt/local/man:$MANPATH

4. Change the NetBeans Settings

Finally stars the NetBeans and open the preferences > C++ > Build Tools, Add GNU_MacPorts and set each compiler path to /opt/local/bin/*.

After finished the global settings, make a new C++ project and open its properties > Build > C++ Compiler > C++ Standard to “C++11″, and compile & run with easy samples.

It seems the NetBeans environment is fine in OS X Mavericks for C++ general programming usage rather than Xcode 5. Of course, it can also use with nice Java EE environment.

プログラマーと英語

予告通りであるが、英語の記事を書く。前に筆者の英語能力を。TOEIC IPテストの最高得点が830点である(2013年12月取得分)。まあ、そのレベルの者が書いてる与太話と考えて欲しい。ちなみに1月に受けた分は825点であった。難しいねぇ。

TOEIC IP

(0) はじめに

最近公私ともに英語で書くことが段々多くなってきたのだが、英語について一度考えをまとめておきたいと思っていたので、一旦まとめておく。まとめておくが、特に体系立ってまとまってるわけでは無いので、つらつらと、が正しいかも知れない。

(1) 国語(日本語)について

まず、過去の記事を見てもらったら分かるのであるが、所謂「旧仮名旧漢字」で書いているのが多いとおり、筆者は国語が大好きである。大好きであるというか、そもそもNative Languageなので、好きもへったくれもない。「日本語」と相対化するような書き方・呼び方すら嫌いである。日の本の国語で良いと思ってる程の者である。

で、英語が重要という話が出てくると、国語はどうするんだ、英語に切り替えるのか、という極端な話が出てきて訳わからなくなる話であるのだが。が、筆者は単に情報源を増やす道具の意味合いでしか英語を捉えていない。読めて話せて書ければ、より多くの情報を収集できる、という単純な話である。

なので、小学校から英語を教育とかそんな話はそもそもあまり興味が無い。

ただ、より厳密に言うと、筆者は歴史的仮名遣い、且つ、歴史的漢字を使われた国語の方が好きであり、現代語は簡易化・堕落した表現だと思ってるので、そういう意味では、このように書いてる最中であっても、歴史的仮名遣いで全部書き直したい、という衝動に駆られる。ちなみにカタカナ語はもっと大嫌いである。

まあ、そんな輩が英語を、って言ってるので、可笑しな話ではある。

(2) 何故プログラマーに英語が必要なのか

これは単純である。一次情報源が英語だからである。現代の殆どの主流たるプログラミング言語は英語で考えられ、英語表記であり、説明書は英語であり、伝道者も英語を使う。

情報を得るために一次情報源を使うのは、様々な利点がある。そもそも情報が多く厚く、量も多いため全体的な品質も高い。そんなことをいちいち書かなくてもちょっと考えれば分かる話なのでこれ以上ぐだぐだ書かないが、より多くの情報を得るために必要だと思っている。

逆の話をしよう。では二次情報源であることが多い日本語の情報はどうなのか。無論良い情報も多い。但し、酷いものも多い。殆どの情報が一次情報英語の翻訳か、もしくは英語の情報を参考にした記述であるため、どうしても「〜らしい」風のものが多くなる。また、翻訳に時間がかかるため、出版から半年以上、酷い場合だと2年以上かかるものも珍しくない。

例えば。ある有名ソフトウェアの開発者が書籍を英語で書いたとする。その翻訳書が一年後に出たとする。読んで疑問が沸いた。日本語翻訳者に質問をするのと、オリジナル英語の著者に質問するのとで、速度・質・満足度、あらゆる点でそもそも比較になるだろうか。これはさすがにならないだろう。

また、欲しい本が翻訳されないのも近年では増えた。Java EE 7の本なぞ日本語のものは1冊も出てないのである。一応これでもC#と比類する企業システム向けシステム開発の双璧である。こんな馬鹿な話があっていいものか、と日本国民として憤慨する事暫しである。

のだが、英語が読めれば、上記は全く問題ない。逆に英語を読めないプログラマーの先を行けるのだ。そりゃー英語で読むでしょう普通。かくして私の本棚は英語の本で埋まっていくのであった。

(3) TOEICはどうなのか

近年話題のTOEICであるが、会社でやっている所も近年では多くなってきたようだ。かくいう筆者の所属する会社も、この件で散々話題を振りまきまくっている原因だったりするわけであり、ここ四年くらい英語を勉強せざるを得ない原因というか環境を作ったものもこれである。

で、20回以上、散々TOEICを受けまくった結果思った事であるのだが、はっきり言ってTOEICのハイスコアを取ったところで、このテストの水準はNativeの小学校水準の読み聞きができるかどうか、でしかないものである、というのが筆者の見解である。

だからTOEICテストそのものに何かの意味を見いだす向きには、それ違うよって言いたいのである。これ、何の変哲も無い只の簡易英語能力確認テストです。

「会議室どこ?」「A、そこ曲がったところ」「B、彼をいじめてます」「C、来週ですね」とTOEICのPart 2の典型問題を日本語で書いてみたらよく分かる。こんなもの小学校低学年向けである。

だから、英語力を確認するのにTOEICを利用するのは、特に出来ない向けには丁度良い簡易さである。あんまり難しいと、問題文すら理解できないからねぇ、と。

で、プログラマー向け書籍に必要な英語力であるが、はっきり言ってTOEICを高得点取れれば、特に問題なく読める。逆に言えば、小学校低学年程度の文書が理解できなくて、それより難しい技術書が読めるわけが無い。

ただ、ご存じの通り英語の技術書であっても専門用語が多いので、それさえ憶えれば、あとは典型表現の繰り返しなので楽勝ある。

かくして私の書棚には英語の本が並(以下略

(4) TOEICを使った勉強方法について

英語便利だよ、と書いたところで、一体どうやって勉強すれば良いのよ!? とぶち切れられる事がリアルにも多い。まあ、確かに言いたいことはよく分かる。四年前の筆者もそうだった。

多くのやり方がある。これはその通り。ただ、筆者はTOEICを利用してまともに通読できるようになった。ので、その説明をしたい。

筆者の場合、会社から強制的に受けされられるようになる前に、自費でTOEIC公開テストを受けに行った(2010年頃)。受けに行く前に、TOEICの本を1冊だけ買って、それを本の通り11日間だけやって受けた。本は定番のロバート・ヒルキの「新TOEICテスト 直前の技術」というやつである。※Amazonだろうが楽天ブックスだろうがその辺の本屋さんだろうがどこにでも売ってる本なので、アフィリエイトリンクなんぞ張らないので勝手に探して欲しい。

で、その初回の結果は600点であった。大学受験以来10数年間まともに英語を勉強してなかった割にはまあまあの成果であったのだが、これの大半は上記の本のお陰でもある。当然ながらJ2EE系の情報は元々英語の書籍から取得していた(元々無かったので)のはあったが、どちらかというと拾い読みに近い利用形態だったので、これで語学力が上がっていたかと言われれば極めて怪しい。

で、そこから現在の830点に至るまでに4年間かかった。やったことの殆どは、公式問題集と各種定番の参考書をやった上で、iKnowという単語サイトがあるので、そこで単語テストをひたすらやりましたよ、程度の全然面白くない話であるので割愛する。暇なときに改めて使った本のレビューを書いておきたいと思う。

要は、最初にとにかくTOEICを受けに行って、その結果にがっかりして、理想とのギャップを埋めていっただけである。ちなみに筆者の理想は900点なので、現在70点のギャップを埋めていっている最中である。

(5) TOEICの点数上昇と効能

さて、TOEICの点数が上がったら、英語の書籍が読めるようになるのか!?という疑問に対して。

TOEICはListeningとReadingと二つのテストがあるのだが、当然ながら効能があるのはReading側である。この点数が上昇すると、何と不思議と長文が読めるようになるのだ。

より厳密に書こう。長文を読んでも頭が痛くならなくなる。長文を読んでも諦めなくなるのだ、である。

英語の本を読んでみよう、と思い立って本屋で大枚をはたいてPaperbackを買ってきた事のある人はよくご存じだろうが、読み始めるとほぼ全ての慣れてない人には、3ページ以内で以下の症状が出る。

  • (ほんとに)頭が痛くなる・吐き気が出てくる
  • すぐ眠くなって寝る
  • イライラして放り投げる
  • 読んでるつもりだけど他の事を考え始めて全然頭に入らない
  • 目がチカチカしてきて単語を追えなくなる

これらはTOEICの後半、Part 7 (長文読解)を制限時間以内(約1時間程度)に解けるようになると、何と解消されるのである。眠くならないし、持続的に読めるのだ!!TOEICの点数で言うと、Readingが450点程度、全体で900点程度あれば、何とか問題ない程度、と考えても良いかなと思っている。

この効能については各種プロの方が沢山書いてるから子細は省略するが、筋肉に相当する読解持続力を付けるための訓練、がPart 7には必要で、Part 7を解けるようになると持続力が付いて長文が読めるようになる、ということなのだろう。いかに英語のプログラミング書籍が比較的簡単であったとしても、数百ページは普通にあるわけであり、途中で放り出さない程度の持続力が無いと続けて読めない。

で、英語の技術書を読めるようになるための訓練本、というのは無いので難しいが、TOEICの訓練本なら掃いて捨てるほど山のようにあるわけであり、一番手頃な学習方法として利用できるのではないかな、と思う次第である。

と、ざっとまとめてみたのだが如何だろうか。どうも書き足りないというか抜けてる事が沢山ある気がするのだが、まあそのときは第二弾でも書き散らかすことにしよう。