ゞョヌカヌが沈黙しおいるこず。 カンファレンスストヌリヌ

10月15日、サンクトペテルブルクの栄光の街はゞョヌカヌ宇宙のスヌパヌノィランが蚪れたした。

いいえ、圌は誰も殺したせんでした。バットマンは負傷したせんでした。 しかし、圌の蚪問は倚くの人に蚘憶されるでしょう。 たず、Javaテクノロゞヌに関する新しい䌚議の初挔でした。 第二に、この䌚議は成功でした。぀たり、倧きな未来があり、最初の䌚議は垞に歎史です。



画像



楜しい驚き



私は䌚議で講挔者ずしお話をしたした。䞻催者は2ヶ月前に私に連絡し、話すこずを申し出たしたが、これは嬉しい驚きでした。 サンクトペテルブルクJUGのリヌダヌ、アレクセむ・フェドロフ@ 23derevo、アンドレむ・ドミトリ゚フ@real_ales、むノァン・ドルゎフ@jetlinerおよびその他倚くの支揎者によっお組織されたした。 アフタヌパヌティヌの1぀で、アレクセむは䌚議の名前のアむデアがどのように圌に䌝わったのかを語りたした。「私は聞いた」ず圌は蚀いたす、「プロコフィ゚フの3぀のオレンゞぞのマリむンスキヌ愛、それから長い間眠れなかった。 さたざたなキャラクタヌが頭の䞭で回転しおいたしたスペヌドの王、クラブの王、道化。 そしお、新しい䌚議のコンセプトの締め切りはすでに迫っおいたす。 だから、トランプでなんずかしお話題を打ち負かすずいうアむデアが生たれたした。 Javaカンファレンスは通垞Jずいう文字で呌ばれおいるため、ゞョヌカヌずいう蚀葉はそれ自䜓が䜕らかの圢で登堎したした。」



さらに驚くべきこずに、2か月で、圌らは非垞にたずもなプログラムを䜜成し、すべおのスピヌカヌず個別に䜜業し、あらゆる方法で実行し、支揎したした。 しかし、プログラムにはいく぀かの奇劙な点がありたした。レポヌトの3぀のタむトルは、「䜕が沈黙しおいるのか...」で始たりたした。

どのように起こったのか、この話は沈黙しおいる。



宿泊斜蚭



私たちの䌚瀟Excelsiorの 2人が䌚議で話をしたした私ずPavel Pavlov@noinline。 コンファレンスは、Pribaltiyskaya HotelのVasilievsky Islandで開催されたした。 地䞋鉄を出お、ホテルたで歩いお行くこずにしたした。ピヌタヌの倜を歩き回るのは良い考えのようです。 しかし、玄10メヌトル埌、ノボシビルスクの街に突然出くわしたした。痛いほどよく知られおいる゜ビ゚トの建物ず、ノボシビルスクずたったく同じ倩気です。 芁するに「3rd Street Builders」。



蚪問者ずオヌガナむザヌのほが党員が同じホテルに䜏んでおり、䌚議もホテルで開催されおいたため、スリッパでレポヌトに行くこずができたした。 それはある皮の奇跡でした。初めお出䌚ったのは、朝目を芚たし、朝食に行き、たくさんの芪しい人に䌚い、昌食のために圌らを远い出し始めおから、2階に䞊がっお、そしお䌚議、そしおアフタヌパヌティヌ、その埌ホテルに戻り、アフタヌパヌティがありたす。 芁するに、私は人生でこれたでにないようなプログラミングのトピックに぀いお話したした。



コンファレンス



そしお2階に䞊がっお、私は䌚議に出垭しおいたした。 䞻催者にふさわしい目で䌚ったので、私はすぐに「私たちの時代のヒヌロヌ」が誰であるかを実感したした。チヌムが過去数日間ほずんど眠っおいなかったこずは疑いもなく掚枬できたした。

リョヌシャ・フェドロフ氏は、䌚議のオヌプニングはほずんど気付かれないたたで、誰もが行ったホヌルカヌドスヌツでマヌクされおいる-スタむルを維持する必芁があるがどこにあるかを語った。 廊䞋では、ゞョヌカヌ䞊の写真を参照で写真を撮り、叀代のコンピュヌタヌゲヌムをプレむできたす。







「9,000,000回ダりンロヌドされたJavaデスクトップアプリケヌションの䜜成方法」



JUG.ruに぀いおのセンセヌショナルなレポヌトの著者であるAnton Keks@antonkeksのレポヌトに行きたした。「 Javaを保存するにはどうすればよいか 」。Antonは、䞻な仕事「流血の䌁業」 Antonは元々Cで蚘述しおからJavaで曞き盎した「Angry IP scan」グリッドを盗聎するための人気のあるデスクトップアプリケヌションを䜜成したした。







レポヌトは小さなファカプから始たりたした。すべおのレポヌトはオヌガナむザヌのコンピュヌタヌからのもので、Javaはこれらのコンピュヌタヌにむンストヌルされおいたせんでした その結果、アントンは自分のアプリケヌションを実際に衚瀺できたせんでした。 この事実は、Javaでデスクトップアプリケヌションを䜜成する堎合、゚ンドナヌザヌがこのJavaを持っおいるずいう事実に頌るこずができないこずを改めお確信させたしたこの問題の解決方法に぀いおは 、モスクワのJavaOne  しかし、残念ながら、これはアントンを玍埗させたせんでした。



アントン党䜓のレポヌトは、Javaデスクトップアプリケヌションで䜕をすべきかが可胜であり、必芁であるずいう単玔なアむデアを人々に䌝えようずしたした。 私はこれに完党に同意したすが、デスクトップ䞊のJavaがあたり人気がなく、特にMacずUbuntuの人気が高たっおいるずいう事実に、私はただ本圓に驚いおいたす。 埌者の事実により、AntonはアプリケヌションをCおよびWin APIからJavaに曞き換えるようになりたした。これは、圌自身がWindowsを長い間䜿甚しおいないが、Windowsナヌザヌを倱いたくないためです。



JavaのUIずしお、アントンはSWTを掚進したした。 誰も知らない堎合-これは、Eclipse UIの䜜成に基づいたIBMのUIラむブラリです。 このラむブラリの冗談は、SWTで蚘述されたアプリケヌションが垞にタヌゲットプラットフォヌムのネむティブアプリケヌションのように芋えるずいうこずです。単に、ネむティブコントロヌルを䜿甚しおUIを描画するからです。 JavaのデフォルトUIの䜕が問題なのかはSwingで、タヌゲットプラットフォヌムのUIが゚ミュレヌトされたす垞に良いずは限りたせん。 れネラルりォヌスむングvs. SWTは2000幎代初頭に非垞に人気がありたした。 これに関する私の個人的な立堎は、䞡方のUIが優れおいるこずです。SWTで垞にタヌゲットプラットフォヌムのネむティブUIを取埗する堎合、SwingではネむティブUIよりも優れたUIを実行できたす。この䟋はIntelliJ IDEAですWindowsはそうではないず思いたすボタンをうたく描画したす。 最埌の声明を螏たえるず、JavaFXの遞択も悪いずは思いたせん。



アントンはたた、HIG-ヒュヌマンむンタヌフェむスガむドラむンに぀いおも話したした。 このこずの考え方は、さたざたなプラットフォヌム䞊でコントロヌルの配眮/呜名芏則があり、゚ンドナヌザヌがアプリケヌションを操䜜するずきに䜿い慣れた経隓を埗るためにこれらの芏則に埓うこずをお勧めしたす。 したがっお、UIを䜜成するずきは、特定のプラットフォヌムのHIGルヌルを考慮する必芁がありたす。 はい、プラットフォヌムに䟝存するコヌドが少しありたすが、別のトリックレむアりトマネヌゞャヌなどを䜿甚するず、このコヌドの量を非垞に小さくするこずができたす。



報告の埌、アントンず私は廊䞋でさらに20分間話したした。圌に䌚えおずおもうれしいです。おそらく私にずっおは、この䌚議で最も印象的なむベントの1぀です。



プロゞェクトゞグ゜ヌパズル。 新しい倱敗



コヌヒヌブレむクで、シュリンむリン@shurymuryに䌚いたした-圌はこのカンファレンスでプレれンテヌションを行いたした。 2枚撮りたす。 私は圌に䌚えおずおもうれしかったし、友奜的な方法で圌に尋ねた「たあ、どのように、レポヌトの準備ができおいたすか」。 圌は私を魅了したした。「もちろん、準備はできおいたす。レポヌト党䜓に1぀の簡単な考えがありたす。PFC 「。 私は蚀いたす「PFCの意味がわかりたせんか 「。シュラ」そしお、それは぀たり、ゞグ゜ヌパズル、PFCがないこずを意味したすより正確には、パブリックモゞュラヌJavaシステムはありたせん。「連絡したすシュラ」想像しおみおください、ゞグ゜ヌパズルに぀いおマヌクラむンホヌルドを聞くこのレポヌトを䜜成するために、圌はモゞュラヌシステムをリリヌスしないこずに決めたず蚀いたす。誰もそれを必芁ずせず、ホヌルに「モゞュラヌシステムが必芁ですか」ず尋ねたす。圌らが埌で蚀ったように、シュラは圌の倚くを倱望させた15分で圌のレポヌト党䜓を入れたした、しかし、私を信じお、圌はそれほど倱望しおいたせん 私のように。



今回はプロゞェクトに䜕が起こったのかを掚枬するこずしかできたせんが、Javaコミュニティヌがこの方法でプロゞェクトを終了せず、Javaで暙準のモゞュラヌシステムを䜿甚できるこずを願っおいたす。



ガベヌゞコレクションプロセスずそれに察しおできるこずを理解する



その埌、CTO兌共同蚭立者のAzul Systems-Gil Teneに1時間半かかりたした。 それは玠晎らしい報告でした-私はそれを匷くお勧めしたす。 誰も知らない堎合、AzulはVegaマルチプロセッサコンピュヌタヌの生産を開始したした。このコンピュヌタヌでは、54個のコアずテラバむトのRAMを搭茉した各プロセッサヌをこのようなマシンに挿入できたす。 そしお、これらのコンピュヌタヌ甚に特殊なJVMを䜜成したした。膚倧な数のプロセッサヌずメモリヌでJVMをスケヌリングする問題を解決する必芁がありたした。 Azulは、倧量のメモリで拡匵可胜なGCを䜜成する方法を孊び、党員に幞犏を䞎えるこずにし、Azul ZingずいうJVMをリリヌスしたした。 このJVMはHotSpotから継承されおいるためそこにはMMずGCしかありたせん、HotSpotず同じハヌドりェアで動䜜したす。



Gilは、Javaのガベヌゞコレクションに぀いお詳しく説明し、基本から始めお最も掗緎された手法で終わり、GCに぀いお知っおいたすべおのこずを思い出したした。 数日で、JVMでGCに぀いおExcelに通知する必芁がありたした-Excelsior JET 。 ちなみに、私はAzul GCが少なくずも倖郚的には私たちのものず䌌おいるこずに非垞に感銘を受けたした。それは同じブリックから組み立おられおいたすが、私たちは独立しおこれに来たした。







ギルが䌝えようずした䞻なアむデアは、ガベヌゞコレクションの過皋で、HotSpotが持぀ポむントずGCセットがポむントからはほど遠いずいうこずでした。 その結果、通垞のJava開発者は、Javaでメモリ管理の問題を解決するためにGCを構成するために100䞇のペンを知る必芁がありたす。 圌の意芋では、ペンは正確に1぀である必芁がありたす。–Xmxさらに先に進み、GCでもこのペンは䞍芁です 。 そしお、砂の䞭に頭を隠しおJavaのメモリ管理に問題はないず蚀う代わりに、Javaの䞖界をより広く芋おみるず、おそらくメモリ管理の問題がよりよく解決される他のJVM実装があるこずがわかりたす。



これは䌚議で最も匷力なレポヌトだったようです。したがっお、HotSpotオブゞェクトのフィヌルドのレむアりトに関するレポヌトがこのトップに入ったにもかかわらず、圌が聎衆の掚定によるずトップ10のレポヌトに入らなかったこずは非垞に驚くべきこずです。 人々は、代替のJava実装を非垞に譊戒しおいるず感じおいたす。 しかし、なぜですか 結局のずころ、Javaを䜿甚しお代替の実装を行うこずができ、同時にアプリケヌションがJava互換の実装で動䜜するこずを保蚌できるこずは倧きな喜びです。 そしお、これらの実装は、Oracleが人生で決しお手に入らない問題を解決できたす。



報告埌、私はなんずかギルず話をするこずができたした。GCに぀いお話したした。 圌が私たちに぀いお完党によく知っおいるこずを嬉しく思いたした。 䞀般に、䞖界のJVMの開発者は原則ずしお私たちのこずを知っおいたすが、残念ながらJava開発者に぀いおは蚀えたせん。



楜しいJVMテクニカルサポヌトラむフストヌリヌ



昌食埌ずころで、非垞に良い、私に話をするのは私の番でしたミシャビコフずOracleは共同報告をしたした。 レポヌトのアむデアは1月に生たれたした。 䌚議の時間は、ミヌシャの䌑暇の時間ずうたく䞀臎したした。ミヌシャは、ペヌロッパずロシアで過ごすこずに決めたした圌はアメリカに䜏んでいたす。 MishaはOracle Java Licensee Engineeringで働いおおり、少し前にオラクルの公匏の専任テクニカルサポヌト゚ンゞニアであり、JCKテストに合栌するのを本圓に助けたした。 さらに、オラクルの倧芏暡な顧客の技術サポヌトに関䞎しおいたす。 たた、Excelsiorでテクニカルサポヌトを提䟛しおおり、私を含むすべおのJVM開発者が順番に勀務しおいたす。 長幎にわたり、ミヌシャず私は、テクニカルサポヌトの人生からかなり倚くの興味深い事䟋を蓄積しおきたした。それらを䞖界䞭の人々ず共有するこずにしたした。 レポヌトを最も䞀般的で兞型的なテクニカルサポヌトの問題の4぀の郚分に分け、楜しいストヌリヌでそれらを垌釈したした。 私たちはこのレポヌトを面癜くしたかったのですが、私にはそうでした。それは楜しかったです、人々は笑いたした。







プロフェッショナル向けのScala



匊瀟からは、Pasha Pavlovが䜜成したScalaに関するレポヌトもありたした。



数幎前、私たちはJVMのコアをほが完党に曞き盎すこずにしたした。 他のJVMず区別するJVMの重芁なコンポヌネントの1぀は、AOTコンパむラ、぀たりプログラム実行前に最適化されたマシンコヌドを生成するコンパむラです「正盎なexe」を取埗したす。 ScalaでAOTコンパむラを曞き盎すこずにしたした。 したがっお、最初は「JavaのJava」レポヌトJavaのJavaずは察照的に、Oracle Labsのかなり有名なGraalプロゞェクトはJavaのHotSpot JITを曞き換える詊みですを䜜成したかったのです。 しかし、ここでの投祚では、このレポヌトはあたり人気がなかったため、䞻催者はトピックをより䞀般的なものに倉曎するように頌みたしたが、Scalaに぀いおです。 その結果、パシャはレポヌトを䜜成するのにたった2.5週間しかありたせんでした。 そしお圌はたさにパフォヌマンスたでそれを調理したした 「Passenger Ivanov、緊急に搭乗ゲヌトに乗りたす」ずいうアナりンスの䞭で、圌は空枯での唯䞀の走行を成功させたした。それは確かにパフォヌマンスに圱響を及がしたしたが、話の途䞭で面癜い゚ピ゜ヌドが発生したしたPashaがJava 8でラムダを「安い䞭囜の暡倣」ず呌んだ瞬間、Lesha Shipilev@TheShadeはツむヌトしたした







アプリケヌションにメモリリヌクがありたすか



このレポヌトがHabréの投祚に登堎し、予想倖にリヌダヌになったずき、倚くの人がそのトピックに驚きたした。Javaがガベヌゞコレクションを持っおいるように芋えるため、メモリリヌクは原則ずしお䞍可胜です。 しかし、このトピックは私をたったく驚かせたせんでした。私の人生では、これらのリヌクの倚くがクラむアントの䟋で芋られたした



ガベヌゞコレクタヌは、クラスのグロヌバル静的フィヌルドおよび呌び出されたメ゜ッドのスタックから利甚できないオブゞェクトのみを収集したす。 そしお、ハッシュテヌブルのようなグロヌバルフィヌルドを取埗したら、そこにオブゞェクトの远加を開始しキャッシュなど、このハッシュテヌブルのクリヌニングを忘れるず、すぐにメモリリヌクが発生したす。



倚くの䞀般的なJavaフレヌムワヌクには内郚キャッシュハッシュテヌブルずしお配眮されるこずが倚いがあり、これを知らずに、突然メモリリヌクが発生する堎合がありたす。 Nikita Salnikov-Ternovskyのレポヌトは、そのようなフレヌムワヌクでこれをプルするのを忘れるず、リヌクが発生するずいう事実に正確に構成されおいたしたこれをどのように知る必芁があるかは明確ではありたせん。



特に興味深いのは、ThreadLocalの堎合です。 Nikitaは、WebアプリケヌションでThreadLocalのようなグロヌバルを取埗し、このWebアプリケヌションをサヌバヌを再起動せずに再むンストヌルするず、リヌクが発生するこずが保蚌されおいるず䞻匵したした。 Lyosha Shipilevの参加を埗おアフタヌパヌティでこのケヌスを詳现に調べたずころ、Java APIのThreadLocal実装にバグがあるこずがわかりたした その埌、これを凊理する方法を芋぀け、Leshaはこのバグを報告するこずを玄束したした。



ヒヌプダンプのサむレントに぀いお



このレポヌトのアむデアは、モスクワのJavaOneのリョヌシャ・シピレフから聞いた。 圌は、Javaオブゞェクトにフィヌルドを正しく配眮する方法に぀いおのハブに関するさたざたな 投皿を読むのにうんざりしおいお、HotSpotがフィヌルドを広げる方法に぀いおレポヌトを䜜成したいず蚀いたした。 原則ずしお、すべおのJava実装は、アラむメント、プロセッサキャッシュの動䜜、およびオブゞェクトのサむズの最小化のために、オブゞェクト内のフィヌルドのレむアりトを最適化したす。 したがっお、クラスで指定するフィヌルドの順序はたったく意味がありたせん。JVMの堎合は、必芁に応じお自由に配眮できるフィヌルドのセットにすぎたせん異なるJVMでも、同じJVMの異なるバヌゞョンでも順序は異なる堎合がありたす。 したがっお、Javaプログラミングでは、゜ヌスレベルでフィヌルドの順序で䜕かを最適化しようずする以䞊に愚かなこずはありたせん。 しかし、その埌モスクワで、私がここであなたが2文で蚀ったこずから党䜓の報告をするこずができるこずに驚いた。 しかし、リョヌシャは管理したしたただし、リョヌシャがハンズフリヌマむクを死に至らしたずきにレポヌトの最埌にマむクを保持しおいたBaruch@jbaruchの助けなしではありたせん







最埌に、聎衆の反応は面癜かったです。「オブゞェクトのフィヌルドがかなり違うかもしれないず想像できたすか」そしお、人々が特定のJVM内郚に぀いおの報告を聞きたがっおいる理由に再び驚きたした。



アフタヌパヌティヌ



䌚議には2぀のアフタヌパヌティがあり、1぀は非公匏で、1日目の終わりにあり、もう1぀は公匏でした。 初日は、さたざたなJVMの開発者が1぀のコヌナヌに、Java EEマスタヌがもう1぀のコヌナヌにいたした。 そしお真ん䞭に座っおいたシュラむリンは、パヌティヌの最高朮で叫びたした「それで、ここでJVMは筋金入りで、血なたぐさい゚ンタヌプラむズがあり、私はここで䜕をしおいるのですか」



アフタヌパヌティヌはネノァの反察偎にあったので、ホテルに䜏んでいた人々は、橋が離婚する前にそこに到着しなければなりたせんでした。 これはすべお異なる方法で行われたした。 私はかなり早く去り、誰かが「3時間」のミックスに取り掛かり、䞀郚の人はそれをする時間がなかったため、朝6時たでピヌタヌを歩き回り、朝にホテルに戻りたした。 そのため、翌日、䞀郚の人は䌚議に参加できたせんでした。



非䌚議



Unconferenceずは䜕を知る぀もりだった人は誰もいたせん。 すべおのスピヌカヌの前倜には、むベントぞの2぀の招埅状が䞎えられたした。 そしおもちろん、ほずんどのスピヌカヌはこの招埅を忘れおいたしたが、最初の日の終わりに思い出しお誰かに手枡したした。



アンカンファレンスの初めに、サヌシャ・ベロクリロフ@alexbelは圢匏を発衚したしたむベントは3぀のセマンティック郚分に分割されおいたすいく぀かのトピックが議論される円卓-誰によっおも発衚され、参加者がさらに投祚するトピックに぀いお議論されたす; 萜雷-トピックに関する5分間のレポヌト。 「芳客からの詰め蟌み」-質問を蚘入した玙を投祚箱に投げ蟌めば、芳客党員がこれらの質問に答えたす。







最初は、むベントの正確な圢匏を知らずに、昚幎ノボシビルスクのDevDayで発蚀したテヌマ「Web 3.0」で話そうず思いたした。 この圢匏のレポヌトはどの䌚議にも適合しないため、Unconferenceの堎合は適切だず思いたした。 , : 5 . 20 : , , . , .



, , , . Java- , , ( ). Java Web . Java WebStart ( ), . , , , . , , JVM-, JavaScript Scala.



, , HTML+JavaScript. , , , . 3.0. Joker, , 2.0, .



Gil Tene, , -. , Java , challenges , .



, . “ ”. : “ Java ?”, “Java ++?», « OpenJDK?”, „ Java , ?”, “ ?».



. « Java RIA Mobile”, . , , : , , , , , , Java client-side . : ( ), , HTML + JavaScript , - , . , , , , , ( - , ), WORA (write once run anywhere), Java. „ Photoshop , ?“, , – “ !”.



mobile. mobile : , . : - , - JavaScript. , Java , ( ) ( JavaScript). , Java iOS, JIT ( iOS ). Excelsior JET, Java , Java, iOS. : , , .



OpenJDK. , - OpenJDK Oracle . , Java- OpenJDK, : GNU , Java.



2



, , , , . , JVM-, , , , : JVM ( ) .







, . Java vs. JavaScript. , JavaScript – : . , ( 16 JVM), , – JavaScript . , , JavaScript (, JSDoc , , - ?), JavaScript . , JavaScript . , Java vs. JavaScript: . .



JUG: Excelsior JET



, , Joker , . JUG Excelsior JET. JUG JavaOne . , JUG Joker. , , , JUG .







- , JUG . , , Oracle, . , , , : Excelsior JET , . , , , , .NET 4.0. , 200 . - , , , VLC – .NET. VLC . .NET , . : , .NET.



Excelsior JET, JVM : , Java. .



, , 3.5 , , ! , , . -: . SSA Regalloc, 2005 ( „ “), , . , ! , .



JCK



– , ! Oracl JCK .

. JCK, JCK. , Oracle ! , IBM, HP, SAP, .





. - ! - - .







, , !



All Articles