Mac OSXにOpenJDK7をインストールしてGroovyを実行する
こちらの@yusukeyさんの記事を参考にMac OSXにOpenJDK7をインストールしてGroovyを実行するところまで試してみたのでメモしておきます。
1.まずはOpenJDK7をダウンロード
Mac OSX用のバイナリが以下から手に入るのでダウンロードしてきます。
http://code.google.com/p/openjdk-osx-build/downloads/list
ひとまずこれを書いてる時点の最新バージョンである
OpenJDK-OSX-1.7-universal-20110729.dmg
をダウンロードしてきました。
4.環境変数JAVA_HOMEの設定
Open JDK7は以下にインストールされるようなので、以下を環境変数JAVA_HOMEに設定します。
私の環境だとJAVA_HOMEは以下となっていました。
$ echo $JAVA_HOME
/Library/Java/Home
確認してみるとHOMEはシンボリックリンクだったので、ひとまず、今のHOMEはHome6として残しておき、Java7用としてはHome7という名前でシンボリックリンクを作成することにしました。
$ ln -s /System/Library/Frameworks/JavaVM.framework/Home /Library/Java/Home6
$ ln -s /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home /Library/Java/HOME7
$ rm /Library/Java/Home
次に.profileを以下のように編集します。
#export JAVA_HOME=/Library/Java/Home6
export JAVA_HOME=/Library/Java/Home7
いつでもHome6に戻せるようにHome6はコメントアウトしておきます。
$ . ~/.profile
$ java -version
openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-b00)
OpenJDK 64-Bit Server VM (build 21.0-b17, mixed mode)
1.7にちゃんとなってます。
5.Groovyの実行
バージョン確認
$ groovy -v
Groovy Version: 1.9.0-beta-1 JVM: 1.7.0-internal
スクリプト実行
$ cat hello.groovy
println 'Hello, Groovy! with JDK7'
$ groovy hello.groovy
Hello, Groovy! with JDK7
スクリプト、実行できました。
GroovyShell実行
$ groovysh
Groovy Shell (1.9.0-beta-1, JVM: 1.7.0-internal)
Type 'help' or '\h' for help.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
groovy:000> assert 1_0_0 + 2_0_0 == 3____00
===> null
groovy:000> assert 255 == 0b11111111
===> null
groovy:000> println 'Hello!'
Hello!
===> null
groovy:000>
GroovyShellも動きました。
GroovyConsole実行
$ groovyConsole &
/Applications/Utilities 557 $ java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:108)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130)
Caused by: java.lang.NoClassDefFoundError: com/apple/eawt/ApplicationListener
at com.apple.mrj.MRJApplicationUtils.registerAboutHandler(MRJApplicationUtils.java:64)
at com.apple.mrj.MRJApplicationUtils$registerAboutHandler.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at groovy.ui.script13120101426311558877614.run(script13120101426311558877614.groovy:22)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1117)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1103)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1121)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1052)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:882)
at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:785)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:768)
at groovy.util.FactoryInterceptorMetaClass.invokeMethod(FactoryBuilderSupport.java:1274)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
at groovy.ui.view.MacOSXMenuBar.run(MacOSXMenuBar.groovy:46)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1117)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:361)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:882)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at groovy.ui.Console$__clinit__closure23.doCall(Console.groovy:260)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:882)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at groovy.ui.ConsoleView$_run_closure1.doCall(ConsoleView.groovy:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:882)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at groovy.ui.ConsoleView$_run_closure1.doCall(ConsoleView.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:882)
at groovy.lang.Closure.call(Closure.java:410)
at groovy.lang.Closure.call(Closure.java:404)
at groovy.util.FactoryBuilderSupport.dispathNodeCall(FactoryBuilderSupport.java:838)
at groovy.util.FactoryBuilderSupport.doInvokeMethod(FactoryBuilderSupport.java:744)
at groovy.util.FactoryBuilderSupport.invokeMethod(FactoryBuilderSupport.java:464)
at groovy.util.FactoryInterceptorMetaClass.invokeMethod(FactoryBuilderSupport.java:1272)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
at groovy.ui.ConsoleView.run(ConsoleView.groovy:51)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1117)
at groovy.util.FactoryBuilderSupport.build(FactoryBuilderSupport.java:1103)
at groovy.util.FactoryBuilderSupport$build.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at groovy.ui.Console.run(Console.groovy:301)
at groovy.ui.Console$run$0.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at groovy.ui.Console.run(Console.groovy:264)
at groovy.ui.Console$run.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
at groovy.ui.Console.main(Console.groovy:199)
... 6 more
Caused by: java.lang.ClassNotFoundException: com.apple.eawt.ApplicationListener
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 108 more
第17回 G*ワークショップに参加してきました
はじめに
2011年7月29日に行われました 7月29日 第17回 G*ワークショップ(東京都) に今回も参加してきました。
今回は私は発表はなしです。運営委員になったはいいのですが、今回は受付でネームカードを渡す程度の仕事しかしていません(^^;
セッション!
山本さん(id:mottsnite/@tyama)のGrails 2.0 M1についての発表
と、
きょんさん(id:kyon_mm/@kyon_mm)のGroovyとかテストとかJenkinsとかVCSとかの話
(このスペースはスライドがアップされ次第更新)
でした。
発表内容については、山本さんは安定の運びでGrails2.0の素晴らしさを伝えており、会場をグイグイ引っ張っておられました。Grailsドキュメント会に参加している身としては、「ドキュメントどうするよ?どうせなら2.0対応にしたいなぁ…」とか思ってしまうわけですが、そんなことどうでもよくなるくらい2.0便利そうですね。
次作るWebアプリはGrails2.0使うぞ!
そして次はきょんさんですが、ゆとり世代と話を絡めて、GroovyやGradle, Jenkinsなどの、いわゆる最近のイケてるプロダクツを駆使してもTDDな開発環境のお話でした。
私の方は最近、開発が非常に残念ながらC#となってしまったため、仕事では素敵な開発環境を構築することはできておりませんが、大変参考になる内容だったので、次のプロジェクトではぜひ参考にしたいところです。
それにしてもGroovyじゃんけん、今後流行る兆し(笑)
UStream!
Twitter4Jでおなじみの@yusukeyさんがUstreamしてくれておりました。
http://www.ustream.tv/channel/jgug
Togetter!
20110729_第17回 G*ワークショップ(#jggug ) - Togetter
このイベントに対してのつぶやきがまとめられています。
懇親会!
今回はLT大会じゃなくて、お店での懇親会でしたので、G*な方々と楽しくお話させていただくことができました。みんな様々な立場で、さまざまな領域でGroovyと出会い、活用し始めているという共通点を持っているので、自然と話も盛り上がり、あっという間に時間が過ぎて参りました。
おわりに
プログラミングGroovyが発売され、今後日本でもGroovyブームが巻き起こる兆しが見えてきました。Groovyを使ってハッピーでグルービーな開発を行いましょう!
補足
そういえばワークショップが始まる前に
もしかして: メンテナンスされていない? www.jggug.org/
@fumokmm @kiy0taka ググラビリティ的に・・よろしくお願いします!
2011-07-29 17:34:41 via YoruFukurou to @fumokmm
との突っ込みが入ったので、JGGUGのページをちゃんと更新したほうが良いですね。ちょこちょこ更新してゆきたいと思います。
書籍紹介
Groovyに興味のあるあなた!Groovyistな方、必読の本をご紹介します。
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 302回
- この商品を含むブログ (113件) を見る
- 作者: 山田正樹,山本剛,上原潤二,永井昌子,杉山清美,杉浦孝博,笠原史郎,香月孝太,福岡竜一,伊堂寺北斗
- 出版社/メーカー: 翔泳社
- 発売日: 2008/08/26
- メディア: 大型本
- 購入: 2人 クリック: 34回
- この商品を含むブログ (27件) を見る
Twitter上に広がるGroovyistの輪、あなたもGroovyバッジを付けてみませんか?
アイコンにGroovyのロゴを追加するjarを作りました - No Programming, No Life
にてアイコンにGroovyバッジ(Groovyのロゴ)を付けられるお手軽アプリを公開させていただいております。
これを利用して実際にTwitterアイコンにGroovyバッジを付けてくれている
クールなGroovyistをご紹介したいと思います!*1
ちなみに、おそらくこのツールを使って作ったのではない方も混じっておられますが、Groovyを愛する気持ちに違いはないと思いますので、あわせてご紹介させていただきたく思います。
Groovyバッジ付きGroovyistリスト (アルファベット順)
TwitterID | アイコン | TwitterID | アイコン |
---|---|---|---|
@40balmung | @bluepapa32 | ||
@fumokmm | @glaforge | ||
@hina0118 | @ikikko | ||
@irof | @kimukou_26 | ||
@kyon_mm | @mike_neck | ||
@mittie | @neiraza | ||
@nightmare_tim | @nobeans | ||
@orange_clover | @pocketberserker | ||
@ponkichi_7 | @take_o | ||
@tkdysk | @toby55kij | ||
@uehaj | New Groovyist |
私もバッジ付けたよ!私も付けてるけど、リストに入ってないよ!
という方は@fumokmmまで一声おかけ下さい。
Enjoy groovy!
更新履歴
- 2011-10-01 @orange_cloverさんを追加しました。
- 2011-09-20 @nightmare_timさんを追加しました。
- 2011-09-04 @hina0118さんを追加しました。
- 2011-09-02 @neirazaさんを追加しました。
*1:なお、見つけ次第このリストは追加してゆきたいと思います。