SlideShare una empresa de Scribd logo
1 de 145
JavaOneで知った!
 これからのJava
            フリュー株式会社
                  阪田 浩一
     @jyukutyo/id:jyukutyo
      1
http://www.youtube.com/watch?v=b-Cr0EWwaTk




                          2
場もあったまった
  ところで


   3
2013 Summer



     4
JDK 8 が来る!



    5
大きなものは



  6
Project Lambda



      7
(前回の関ジャバで
 やりました)


    8
id:jyukutyoと
id:backpaper0の


      9
はてダをご覧ください



    10
1点新たに知ったこと



    11
FileFilter x = (File f) -> f.canRead();

は

FileFilter x = File::canRead;

とも書ける。




                    12
Project Jigsaw



      13
新たな
モジュール管理機構


    14
追加されるもの



   15
•グループ化と依存関係
•バージョン管理
•カプセル化
•オプション
•エイリアス
           16
module-info.java
      に記述


       17
たとえば今、
こういうクラスがある


    18
com.foo.Main
com.foo.Other
com.foo.ui.Shell

        19
com.fooパッケージ
以下をグルーピング


     20
// module-info.java

module com.foo { }




                      21
com.foo.Mainクラス
をエントリポイントに


       22
// module-info.java

module com.foo {
  class com.foo.Main;
}




                      23
依存するJARが
 あるとき


   24
今まで。



 25
$ java -cp app.jar:bar.jar:baz.jar ...




                    26
JAR Hell



   27
これから。



  28
// module-info.java

module com.foo {
  requires org.bar.lib;
  requires edu.baz.util;
}




                      29
バージョニング



   30
// module-info.java

module com.foo @ 1.0.0 {
  requires org.bar.lib @ 2.1-alpha;
  requires edu.baz.util @ 5.2_11;
}




                      31
カプセル化



  32
// module-info.java

module com.foo.secret @ 3 {
  permits com.foo.lib;
}

com.foo.libからしか、
com.foo.secretは呼び出せない。



                      33
オプション



  34
// module-info.java

module com.foo.app {
  requires com.foo.lib;
  requires optional com.foo.extra;
}




                      35
集約



36
// module-info.java

// Module aliases
module com.foo.lib {
  provides com.foo.lib.db;
  provides com.foo.lib.ui;
  provides com.foo.lib.util;
}



                      37
モジュールをまとめる



    38
新しいフォーマット
   jmod


    39
モジュールファイル
  と呼ぶ


    40
jpkgコマンドで
 生成できる


    41
JDK 9では!



   42
セルフチューニングな
    JVM


     43
末尾再帰の継続渡し
  ができる!


    44
ビッグデータ対応!



    45
1つのJVMでの
マルチテナント対応!


    46
の予定です



  47
Java EE



   48
実はNo.1



  49
Java EE 7は
 全世界で
 4000万DL

    50
Java EE 8



    51
•JSF   2.2

•JPA   2.1

•EJB   3.2




             52
クラウド対応



  53
PaaSには
スタンダードが
 ないから

   54
Java EEで吸収



    55
プロビジョニングに
履歴管理モデルを
   導入

    56
伸縮性とクラスタ、
自動サービスレベル管理


     57
マルチテナントを
@Multitenantで


      58
NIO 2のAPIに対応



     59
つまり
WebSocketのような
プロトコルをサポート


      60
ReadListenerと
WriteListener


      61
AsyncIOInputSourceと
 AsyncIOOutputSink


         62
を追加



 63
public class NIOSampleServlet extends HttpServlet
  protected void doGet(HttpServletRequest request,
! ! ! ! ! ! ! ! ! ! ! HttpServletResponse response) {
    final ServletInputStream sis = request.getInputStream();
    final ServletOutputStream sos = response.getOutputStream();

        sis.setReadListener(new ReadListener() {
          public void onDataAvailable() {
            sis.read(new byte[sis.dataAvailable()]);
          }
          ...
        });

        sos.setWriteListener(new WriteListener() {
          public void onWritePossible(int size) {
            try {
              byte b[] = new byte[size];
              sos.write(b);
            }
            ...
        });
    }
}

                                     64
セキュリティ



  65
CSRF対策



  66
XSS対策で
エンコーディングと
エスケープをサポート


    67
その他雑多ネタ



   68
Project Coin



     69
switch文でString
   使えるけど


      70
switch(s) {
  case "a":
  case "b":
    return 10;
  case "c":
  case "d":
    return 20;
  ...
}



                 71
一体
どうなってるの?


   72
// Desugared
int $t = -1;
switch(s.hashCode()) {
  case 0x61: // "a".hashCode()
    if(s.equals("a")) $t = 1; break;
  case 0x62:
    if(s.equals("b")) $t = 2; break;
  ...
}

switch($t) {
  case 1:
  case 2:
    return 10;
  case 3:
  case 4:
    return 20;




                                 73
Project Lambdaで
 ダイアモンド継承


       74
interface A { void m() default ...; }

interface B extends A { void m()
! ! ! ! ! ! ! ! ! ! ! ! default ...; }

interface C extends A { }

class D implements B, C { ... }
// which is called when call D.m()...




                      75
interface A { void m() default ...; }

interface B extends A { void m()
! ! ! ! ! ! ! ! ! ! ! ! default ...; }

interface C extends A { }

class D implements B, C { ... }
// B.m used if no D.m

Bがm()をオーバーライドしているので、
より特化したBのm()が使われる


                      76
じゃあこれは?



   77
interface A { void m() default ...; }

interface B { void m() default ...; }

class C implements A, B {
  public void m() {
    m();
  }
}
// what happens?



                      78
コンパイルエラー



   79
interface A { void m() default ...; }

interface B { void m() default ...; }

class C implements A, B {
  public void m() {
    A.super.m();
  }
}
// A.m()を明示的に呼び出す必要がある(ダサい)



                      80
次は



81
セッションを1つ
ダイジェストで


   82
Low Latencyに
するためのGC基礎


     83
in HotSpot VM



      84
オブジェクトの
アロケーションは
very cheap

    85
だいたい
10 CPU命令


   86
だから
生存期間が短い
オブジェクトの

   87
アロケーションは
  全然OK


   88
マイナーGCで
すぐ回収される


   89
マイナーGCは
 早いし
 問題なし

   90
アロケーションより
オブジェクトの保存の
   方が

    91
レイテンシに
インパクトがある


   92
ただし、頻繁なGCは
年齢が早く上がり


    93
プロモーションが
  起こって


   94
フルGCが走るから
 そこは注意


    95
そして



 96
並行GCを使おう



   97
並行GC =
アプリケーションが
  停止しない

    98
-XX:+UseParallelOldGC
          か
 -XX:+UseParallelGC


          99
(JDK6のほとんどの
環境でデフォルト)


     100
CMS(Concurrent
Mark & Sweep)
 を使ってもいい

      101
–XX:+UseConcMarkSweepGC




           102
けど、
Conncurrentは


     103
ライトバリアが
いるので注意


   104
オーバーヘッドになる
   ので


    105
case by caseで



      106
Stop the World
    するGCは


      107
ライトバリアが
 いらない


   108
理想的には



  109
Parallel GCで、
Old世代の解放を避ける


       110
ちなみに



 111
大きなオブジェクトは



    112
アロケートも
 初期化も
高価です!

  113
ヒープに
フラグメンテーション
発生させちゃうかも

    114
配列とかのリサイズも
  そうだよ


    115
オブジェクト
プーリングも
潜在的に問題

  116
GCは生きている
 オブジェクトを
マークしていくもの!

    117
プールはロックが
  いるし、
スケーラビリティ--

    118
GCの振る舞いを
 観察しよう


   119
-XX:+PrintGCDetails
      と一緒に



         120
-XX:+PrintGCTimeStamps
          か
-XX:+PrintGCDateStamps
         を指定


          121
GCログの可視化は
GChisto(java.net)
        で

        122
あとは
  VisualVMの
VisualGCプラグイン
     とか
      123
ミッション
コントロール
 とか

  124
早すぎる最適化は
  しない!


   125
プロファイル
しましょう


  126
という感じでした



   127
一番おもしろかった
  セッション


    128
トラブルシューターの頭の中身
∼7年間のJavaトラブルシュートサービ
        スから




         129
(ひいき目なしに)



    130
おまけ



 131
Java資格試験も
  変わる!


    132
オラクルマスターと
   同様


    133
134
ブロンズ、シルバー、
  ゴールドへ


    135
旧資格保持者には
 移行試験あり


   136
最後に



 137
JavaOneでは
関ジャバメンバーも
活躍しました!

     138
@cero_t



   139
140
パネルディスカッションと
 BOFセッションで登壇



      141
@kiy0taka



    142
143
Special LT
   で登壇


    144
ご清聴
ありがとう
ございました

  145

Más contenido relacionado

La actualidad más candente

Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
MITSUNARI Shigeo
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
Yosuke Onoue
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
 

La actualidad más candente (20)

Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
From IA-32 to avx-512
From IA-32 to avx-512From IA-32 to avx-512
From IA-32 to avx-512
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみたWASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
 
Memory sanitizer
Memory sanitizerMemory sanitizer
Memory sanitizer
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl汎用性と高速性を目指したペアリング暗号ライブラリ mcl
汎用性と高速性を目指したペアリング暗号ライブラリ mcl
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
 
optimal Ate pairing
optimal Ate pairingoptimal Ate pairing
optimal Ate pairing
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
Spectre/Meltdownとその派生
Spectre/Meltdownとその派生Spectre/Meltdownとその派生
Spectre/Meltdownとその派生
 

Destacado

Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
Koichi Sakata
 

Destacado (9)

DevLove関西 関西人の自分戦略
DevLove関西 関西人の自分戦略DevLove関西 関西人の自分戦略
DevLove関西 関西人の自分戦略
 
関ジャバ 20130731 invokedynamic
関ジャバ 20130731 invokedynamic関ジャバ 20130731 invokedynamic
関ジャバ 20130731 invokedynamic
 
Beyond JUnit3
Beyond JUnit3Beyond JUnit3
Beyond JUnit3
 
DevLOVE関西 5年目、10年目の自分戦略 20141030
DevLOVE関西 5年目、10年目の自分戦略 20141030DevLOVE関西 5年目、10年目の自分戦略 20141030
DevLOVE関西 5年目、10年目の自分戦略 20141030
 
日本からJavaOneに行こう!
日本からJavaOneに行こう!日本からJavaOneに行こう!
日本からJavaOneに行こう!
 
JITコンパイルはじめの一歩
JITコンパイルはじめの一歩JITコンパイルはじめの一歩
JITコンパイルはじめの一歩
 
デブサミ関西2012 B-3
デブサミ関西2012 B-3デブサミ関西2012 B-3
デブサミ関西2012 B-3
 
How Scala code is expressed in the JVM
How Scala code is expressed in the JVMHow Scala code is expressed in the JVM
How Scala code is expressed in the JVM
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
 

Similar a 関ジャバ JavaOne Tokyo 2012報告会

Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
 
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
koichik
 

Similar a 関ジャバ JavaOne Tokyo 2012報告会 (20)

Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスするEWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
 
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスするEWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
EWD 3トレーニングコース#19 JavaScriptからGlobalストレジにアクセスする
 
Objc lambda
Objc lambdaObjc lambda
Objc lambda
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
 
Java SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRubyJava SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRuby
 
Boost Tour 1.50.0 All
Boost Tour 1.50.0 AllBoost Tour 1.50.0 All
Boost Tour 1.50.0 All
 
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
Maxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミングMaxwell と Java CUDAプログラミング
Maxwell と Java CUDAプログラミング
 
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
 
Project Loom + Project Panama
Project Loom + Project PanamaProject Loom + Project Panama
Project Loom + Project Panama
 
Boost tour 1_40_0
Boost tour 1_40_0Boost tour 1_40_0
Boost tour 1_40_0
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
boost tour 1.48.0 all
boost tour 1.48.0 allboost tour 1.48.0 all
boost tour 1.48.0 all
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ  JVM 特集  2015年8月]HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ  JVM 特集  2015年8月]
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
 

Más de Koichi Sakata

Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
Koichi Sakata
 
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性があるKanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
Koichi Sakata
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 

Más de Koichi Sakata (20)

Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMIntroduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native ImageIntroduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVM
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 
Bytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte BuddyBytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte Buddy
 
Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVM
 
Graal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT CompilerGraal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT Compiler
 
Kanjava 201804 Java News
Kanjava 201804 Java NewsKanjava 201804 Java News
Kanjava 201804 Java News
 
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性があるKanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
 
from Java EE to Jakarta EE
from Java EE to Jakarta EEfrom Java EE to Jakarta EE
from Java EE to Jakarta EE
 
Java release cadence has been changed and about Project Amber
Java release cadence has been changed and about Project AmberJava release cadence has been changed and about Project Amber
Java release cadence has been changed and about Project Amber
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
 
KANJAVA PARTY 2017 前説
KANJAVA PARTY 2017 前説KANJAVA PARTY 2017 前説
KANJAVA PARTY 2017 前説
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
 
“Purikura” culture in Japan and our web application architecture
“Purikura” culturein Japan andour web application architecture“Purikura” culturein Japan andour web application architecture
“Purikura” culture in Japan and our web application architecture
 
デブサミ2017 Javaコミュニティ作ったら人生変わった
デブサミ2017 Javaコミュニティ作ったら人生変わったデブサミ2017 Javaコミュニティ作ったら人生変わった
デブサミ2017 Javaコミュニティ作ったら人生変わった
 
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
 
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
 

関ジャバ JavaOne Tokyo 2012報告会

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n