Shenandoah GC・ZGC・Epsilon GCをざっくり理解したい! JJUG CCC 2018 Spring での発表資料です
Shenandoah GC・ZGC・Epsilon GCをざっくり理解したい! JJUG CCC 2018 Spring での発表資料です
どうも!@yokotaso です! 2018/05/26のJJUG CCC 2018で「ざっくりわかった気になるモダンGC入門」というタイトルで登壇させていただきました。 現在開発中の新しいGCアルゴリズムをざっくり理解することをテーマに発表しました。 発表練習用に作ったカンペの内容を公開します。ブックマークコメントでもツイートでも感想を書いていただけると喜びます! 発表資料は、speakerdeck にあります。はじまり〜はじまり〜 はじめに 今日はざっくりわかった気になるモダンGC入門というお話をさせていただきます。 現在開発中のGCアルゴリズムの全体像を理解してもらうことを目的としたセッションです。よろしくおねがいします。 さて今日のアジェンダですが、まず簡単にこれまでのGCを復習した後に新しいGCが必要になってきた背景について少し話します。 次にShenandoahGC、ZGC、E
概要 Thread#setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler) を呼び出すことでアプリケーション全体のログ設定を変更することができる。 上の設定をThreadGroupで上書きすることができる。ただし、ThreadGroup自体がUncaughtExceptionHandlerを継承しているため、ThreadGroupのサブクラスを自前で作成する必要がある。 上の設定をThread#setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler)を呼び出すことで上書きすることができる。 説明 Javaのスレッドの実行では、通常、エラーハンドリングは自前で行うのですが、キャッチされないRuntimeExceptionの処理を忘れてしまったりするこ
マーチン・ファウラー氏「リファクタリング 2nd Edition」で20年ぶり内容刷新、サンプルコードはJavaScriptに。Web主体で書籍はエッセンシャル版の位置づけ マーチン・ファウラー氏が20年ぶりに大幅に内容を刷新した書籍「リファクタリング 2nd Edition」を今年秋に出版する計画だ。サンプルコードはJavaからJavaScriptに変わる。また、コンテンツ本体はWebサイトとなり、書籍はそのエッセンシャル版の位置づけとなる。 「リファクタリング」とは、ソフトウェアの機能追加や変更、性能向上などに備えるため、開発されたコードの外部に対する振る舞いは変更せず、より整理された、あるいは洗練されたコードに書き換えること、あるいはその手法のことを指します。 いまでは開発者の間で広く知られているこのリファクタリングについて、その目的や手法などを書籍としてまとめあげ、出版したことで啓
予定通りにJava10が出ましたね!Javaが予定通りにリリースされることが珍しすぎたのか、関東では雪になっていたようです。 Java10の変更点についてはこちらにまとめています。 Java 10新機能まとめ - Qiita Java10のJEP以外の変更まとめ - Qiita ところで、varが導入されたのでいろいろ試してたらコンパイラが落ちました。 次のようなコードを-g付でコンパイルすると落ちます。 import java.util.List; public class Main { public static void main(String... args) { var m = List.of("a", 1); System.out.println(m); } } このように、正式リリースであるbuild 46でコンパイルするとこうなります。 src$ javac Main.ja
Javaのジェネリクスは一般に配列と混ぜてはいけないとされるが、混ぜて用いた場合に何が問題となるのか。 歴史的な問題 Javaが1995年に登場した当時、Javaに配列はあったがジェネリクスはなかった。 ジェネリクスを含む型システムの理論的な整備は、1990年代から2000年代にかけてのJavaのバージョンアップの時期に並行して行われていた。これは1995年当初のJavaになぜより良いジェネリクスを搭載した形でリリースされなかったのか?ということにひとつの答えを示すだろう。つまり、1995年当時にはジェネリクス(Java5に搭載されたような変性を含むもの)は未来の技術であって、まだ理論的に固まっていないものであった、というわけだ。 Java言語仕様にも記述されているが Historically, wildcards are a direct descendant of the work b
技術的な標準・規格 (TODO: IATA, Microsoft) tz database タイムゾーンに関する、ソフトウェア・エンジニアにとって最も標準的なデータが tz database (Wikipedia) でしょう。 "Asia/Tokyo" や "Europe/London" のようなタイムゾーンの名前は、この tz database のものです。 tz database のタイムゾーンは "/" の前の最初の部分に大陸名・海洋名を用い、続いて、典型的にはそのタイムゾーン内の著名な都市名・島名をその代表として名付けられています。21 国名は基本的に使われません。22 "America/Indiana/Indianapolis" のように3要素で構成されるタイムゾーンも少数ながら存在します。 tz database はボランティアによってメンテナンスされています。タイムゾーンの情
今月のはてな日記は2日しか書けていないということに衝撃を受けて、思い出しながら書ける内容で盛ってみます。 今月3日に日本Javaユーザーグループ(JJUG:Japan Java User Group)主催のカンファレンス(CCC:Cross Community Conference)で、JavaFXで地図を描くというセッションに登壇しました。JJUG CCCは、公募のセッションとスポンサーセッションから構成されているようです。9月頃に2つのテーマで公募し、そのうち1つが採択され、登壇することとなりました。もう1つのテーマはJava読書会BOFで読んできた書籍一気通貫紹介だったのですが、こちらは非採択でした。 公募の動機 Javaといえば、OSの縛りを超えて動くプログラムを作ることができる言語で、しかもGUIを標準で持っています。ですから、作ったGUIプログラムがWindows、Linuxな
この記事は「Visual Studio Code Advent Calendar 2017」の7日目の記事です。 昨日は@74thさんの「Visual Studio Codeの各言語、環境のデバッグの仕方を集めたサイトを作ってる」でした。 明日は@Maxfield_Walkerさんです。 私からは「Visual Studio CodeでJavaを書いてみた話」をしたいと思います。 なんでVisual Studio CodeでJava書くの? Javaのコードを書くとき、通常であればIntelliJ IDEAやEclipse、NetBeansなどのIDE(統合開発環境)を使います。コード補完やJavaDoc、ビルド、ユニットテストなど、様々な機能と周辺ツールを利用可能で、効率良く開発ができるためです。 私はJava EE開発をやっていたので、ずっとNetBeansをメインに使ってきたのですが
はじめに 前回の記事『Selenium IDE の代わりに Silk WebDriver を使ってみる』では、Silk WebDriver を使用して Selenium スクリプトの記録と再生を試しました。今回は、記録したスクリプトを Java ソースコードにエクスポートして、Eclipse 上から JUnit テストとして実行する方法を紹介します。この記事では、前回の記事の続きを想定していますので、 Silk WebDriver がインストールされている WebDriver 上でスクリプトが記録されている ことを前提としていますので、前回の記事を参考にこの状態まで進めてください。 準備 今回は Eclipse 上で JUnit テストを実行するので、まずは環境を整えます。使用するマシンに JDK がインストールされていることを確認してください。2017 年 12 月現在、Eclipse
AndroidエンジニアがRxを使うモチベーションって非同期処理に対するソリューションとしてが多いと思うんだけど、Futuer使ったりするのと比べて、使う側がそもそも非同期か同期かを知る必要がない点が優れていると思います— 有象無象 (@kgmyshin) 2017年9月28日 この件、多少説明した方がいいのではと思ったので記事にしました。 一応Androidの話です。題材はなんでもよかったんですがリポジトリパターンを題材としてみました。 あらかじめ言っておくと、コードの細かいツッコミは置いておいてもらえると。伝えたいのは 非同期か同期かを意識しなくていいとはどういうことか です。 Rxのなかった世界のころ 非同期がゆえに... こういうリポジトリのinterfaceを実装したいと考えます。 interface CourseRepository { fun resolveById(id:
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? かつてJavaは技術の中心だった 私はSIerでシステム開発のアーキテクトやPMを担当しています。SIではまだまだJavaが主流ですが、文法を理解してコーディングできるだけでは活躍できない時代がすでにきていることを実感します。 私の上司が**「技術の渦」**という独特の表現を使って説明してくれたのですが、2000年から2006年ぐらいまではJavaを書くということは、いろいろな最新技術の実装を学べる時代でした。アプリケーションサーバー、XML、SOAP、MQ、CORBA、マルチスレッドなど、現代の評価としては芳しくないものも多いですが、
JSR 305’s @ParametersAreNonnullByDefault を使うと, @Nullable でアノテートされていないメソッド, 引数, フィールドが @NonNull アノテートされているように解釈され, @NonNull アノテートされているのと同じ振る舞いになります. プロジェクトによっては, @NonNull を明示することが煩わしく, @Nullable のみを定義することにして, それ以外は @NonNull 扱いとするルールを採用しているところもあるかと思います. ただ, これではIDEが提供するNull安全のインスペクションメッセージによる恩恵を受けることができず, 実装者が “@Nullableをつけ忘れていた” なんて悲劇を招く可能性もあります. “Tool, not Rules” ということで, デフォルトの振舞いを @NonNull にしたいとき
あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。
JVM関連の最近の出来事〜GraalとOpenJ9〜 1. JVM関連の 最近の出来事 ~Graal/OpenJ9~ 関西Javaエンジニアの会 / ポノス株式会社 阪田 浩一 @jyukutyo #kanjava 2. 会長だけどじゅくちょー 阪田 浩一 通称: じゅくちょー 関ジャバ会長 JVMが大好き ポノス株式会社(スマホゲーム会社) 3. 私の検索 • Graal • J9 • JIT • HotSpot • JVM • GC 4. 今日は GraalとOpenJ9で “聴いたこと”を 話します 5. 理解しきれておらず 誤ったことを言う 可能性もあります (フォローお願い) 6. Graal 7. Graal • HotSpotでの新しいJITコンパイラ • Java 9でexperimental • Javaで記述されている • 他言語のサポート – http://www.o
はじめに このエントリは『テスト駆動開発』を写経しようと思ったものの、環境構築から始めなければならない人向けに書きました。 テスト駆動開発 作者: Kent Beck,和田卓人出版社/メーカー: オーム社発売日: 2017/10/14メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る まず、私の Java に対する習熟度についてですが、Java言語プログラミングレッスン 第3版(上) Java言語を始めようの上下を読破した程度で、Java 周りの開発環境は全く分かっておらず、Eclipse を軽く触ったことがある程度です。 また、テスト駆動開発や自動テストについては、興味はあったものの実際に手を動かして使ったことはないレベルなので、『テスト駆動開発』を写経して実際に体感してみようと思い購入しました。 ですが、いざ読み始めてみると「Eclipse で JUnit の使い
月一ペースで怒涛のごとく進化を続けるVisual Studio Code(以下VS Code)だが、最近、Javaのデバッグ実行ができるようになったらしいので、試しにやってみる。 必要なもの Visual Studio Code 今回は1.17.2を使用。 Java Development Kit 今回は1.8を使用。 Javaアプリケーションプロジェクト Maven/Gradle/Eclipseのいずれか。 今回はMavenプロジェクトを使用。 手順 VS Codeを起動 拡張機能Java Extention Packをインストールする 拡張機能ビューを開く(Ctrl+Shift+X or ⇧⌘X) 入力欄にjava packとか入力して、Java Extention Packを探す。 インストールをクリック インストールが終わったら再読み込みをクリック なお、Debugger for
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く