Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]David Buck
Java SE 8の主要な機能として、Lambda(クロージャ)とデフォルト・メソッド(従来ディフェンダー・メソッドもしくはエクステンション・メソッドと呼ばれていた)があります。クロージャを言語に追加することによってアプリケーションやライブラリに新たな表現の機会が与えられましたが、実際にはどのように実装すべきなのでしょうか。Lambdaはインナー・クラスによってシンプルでかつ文法的にコンパクトになるということは広く理解されていると思います。しかし、現実にはLambdaによる記述は、Invokedynamicを使った実装によって従来のJavaとは異なったものになっています。本セッションでLambdaについて、さらに深く理解してください。
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]David Buck
Java SE 8の主要な機能として、Lambda(クロージャ)とデフォルト・メソッド(従来ディフェンダー・メソッドもしくはエクステンション・メソッドと呼ばれていた)があります。クロージャを言語に追加することによってアプリケーションやライブラリに新たな表現の機会が与えられましたが、実際にはどのように実装すべきなのでしょうか。Lambdaはインナー・クラスによってシンプルでかつ文法的にコンパクトになるということは広く理解されていると思います。しかし、現実にはLambdaによる記述は、Invokedynamicを使った実装によって従来のJavaとは異なったものになっています。本セッションでLambdaについて、さらに深く理解してください。
Tech Deep Dive #2 in Osaka
https://techdeepdive.connpass.com/event/79096/
2018/03/17
アプリケーションを動かしてて、データベースが遅くなったり壊れてしまった際に、どのように対処したらいいのかと、お困りの方は少なくないのではないでしょうか。そんな時に備えて、データベースの設計方式や実装方法をご紹介します。
Java Bytecode Crash Course [Code One 2019]David Buck
Java bytecode lies at the foundation of the the entire Java ecosystem. Regardless of what language and tools you use, if you run on the JVM, you’re using Java bytecode. Although understanding bytecode is not a requirement for all developers, a deeper understanding of how your code runs on the JVM can make understanding and resolving certain types of issues much easier. Understanding bytecode also opens the door to more-advanced techniques such as bytecode instrumentation via JVMTI and writing your own Java agent. This session starts at the very beginning and covers all the basics, with a heavy emphasis on examples.
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...David Buck
The document outlines a general product direction from Oracle that is intended for informational purposes only and should not be relied upon for purchasing decisions. Any features or functionality described are subject to change at Oracle's sole discretion. Statements in the presentation relating to Oracle's future plans are forward-looking statements subject to risks and uncertainties detailed in Oracle's SEC filings. All information is current as of September 2019 and Oracle undertakes no duty to update any statements. The document is protected by copyright law.
invokedynamic for Mere Mortals [Code One 2019]David Buck
The invokedynamic instruction (part of JSR 292) has been around since JDK7. Despite its importance to most languages that run on the JVM, many developers still do not understand how it is used or implemented. Most resources available about JSR 292 are aimed at language implementers who are experts in compiler theory and language design. This session is different, offering an overview of JSR 292 for people who are curious about how things work but do not necessarily spend all day working on java bytecode. This update of the speaker’s 2015 session on the same topic has been updated to include new uses and related changes since Java 8.
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...David Buck
Why aren’t your threads behaving? Although most developers are confident about handling better-known issues such as deadlocks and simple hangs, many people still come across liveness issues that are not always easy to identify and resolve. From complete hangs that bring your application to a halt, to scalability issues, there are all sorts of things that go bump in the night. This session explores the most common types of things that can prevent your Java threads from getting work done and shows how to address them.
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]David Buck
With the recent open-sourcing of JDK Mission Control, there is even more interest in Java Mission Control and Java Flight Recorder than ever. A lot has changed, but these tools still remain on the forefront of debugging and troubleshooting Java issues, both during development and in production. This session covers these recent changes, migrating from earlier versions, and what the JDK Mission Control community’s plans are for the future.
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]David Buck
The document outlines a product direction intended for information purposes only and is not binding. Any features or functionality described may change or be removed at Oracle's sole discretion. Statements relating to Oracle's plans are forward-looking and subject to risks. All information is current as of September 2019. Oracle undertakes no duty to update any statement in light of new information or future events. The document is intended to provide a non-binding overview of Oracle's general product direction and is not a commitment to deliver any functionality.
The document discusses the Z Garbage Collector (ZGC) introduced in JDK 11. ZGC provides scalable low-latency garbage collection for heap sizes in the terabytes by using concurrent, tracing GC techniques. It aims to reduce GC pause times to less than 10ms even for very large heaps, with low overhead of around 15%. The document covers how ZGC works, its implementation details like colored pointers and load barriers, and its performance compared to Parallel GC and G1 GC based on SPECjbb2015 benchmarks.
Update on Project Valhalla delivered during the Japan Java User's Group Cross Community Conference Spring 2019 Keynote. After a very brief review of Project Valhalla and its goals, we cover nest-based access control (JEP 181, new in JDK 11) and an overview of the currently available value type prototypes (MVT and LW1).
3月20日にリリース予定のJDK10では12のJEPが提案され、実装/実現される見通しです。今回注目の新機能はJEP286: Local-Variable Type Inference- ローカル変数の型省略(var記法)です。このセッションではこのJEPの解説を中心に、その他主なJEPの紹介を行います。
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]David Buck
A follow-up to my JavaOne 2015 “HotSpot Synchronization, a Peek Under the Hood” session, this year’s session continues the investigation of concurrent programming in Java, with a strong emphasis on the implementation side. You will see how the JVM supports both the Java concurrency API and the Java memory model. For example, the presentation looks at how Java language-level constructs such as the volatile keyword change the way the JVM accesses memory across a variety of CPUs. After this session, you should have a more intuitive sense of why the Java memory model imposes the restrictions that it does.
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]David Buck
Often the true mark of a successful technology is when something works so well that those who benefit the most from it are not even aware of its existence. Java’s bytecode verification undoubtedly falls into this category, but it is as vital as ever to keeping Java secure and safe. This session takes a deep dive into the safeguards that bytecode verification provides for us and shows how it continues to protect us from not only malicious code but also our own mistakes.
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]David Buck
presentation video: https://www.youtube.com/watch?v=buUkXFx9ao8
Ever wonder how the JVM “knows” how to stop at the breakpoint you set? Curious about how the various debug flags affect your application? This session examines the HotSpot’s support for debugging Java code (JVMTI and related APIs) and takes a deep dive into the implementations of some of the more interesting features used by debuggers, profilers, and other tools.
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]David Buck
去年のJJUGナイトセミナー JVM特集で実施した「HotSpot のロック: A Peek Under the Hood」の続きのセッションです。
java.util.concurrentやJava Memory Modelの実装について、いくつかご紹介します。これらで不可欠な技術がJVMとクラス・ライブラリでどのように提供されているかを簡単に説明します。たとえば、volatileキーワードの利用時に、JITコンパイルによって生成されるコードはどのように変わるかを分析します。
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]David Buck
presentation video: https://www.youtube.com/watch?v=gIffIZnmYBM
The invokedynamic instruction (part of JSR-292) has been around since JDK 7. Since it's introduction 4 years ago, we have seen it's adoption by many of the JVM's most popular languages, including Java itself! Despite its importance to most languages that run on the JVM, many developers still do not understand how it is used or implemented. Most resources available about JSR-292 are aimed at language implementers who are experts in compiler theory and language design. This session will be different, and will offer an overview of JSR-292 for people who are curious about how things work, but do not necessarily spend all day working on java bytecode.
HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]David Buck
While there are many excellent resources about how to correctly use synchronization in your own code, what happens at the JVM level is still often a mystery for most users. In this session, I will pull back the curtain on HotSpot's locking implementation. We will look at the various types of locks that exist within HotSpot (thin, inflated, biased, etc.), how they are implemented, and the impact they have on your code's performance. We will also look at the various types of profiling information you can collect with tools like the Java Flight Recorder to better understand how locks are used by your application. Finally, we will look at the most common JVM tuning options for HotSpot and give some general tuning guidelines.