JBreak 2017 Java Conference, or Why Charles Nutter Goes to Novosibirsk from Minneapolis
Charles Nutter is a Red Hat JVM developer working on OpenJDK, the maintainer of the JRuby, Java Champion and Ruby Hero project, a first-class specialist and speaker of many Java conferences. He first came to Russia last year at Joker 2016, where he made two hardcore presentations , after which he admitted that he did not expect such a warm welcome and decided to return to Russia at all costs:
Everything turned out well, and Charles planned visits to Novosibirsk (JBreak, April 4) and to Moscow (JPoint, April 7-8). We have already done a review of the JPoint 2017 program , so our hands reached JBreak 2017. Under the cut - there is a long post about everyone who will speak in Novosibirsk and about everything that they will tell.
In total, the program will have 21 reports. Let's see what topics are included in the program this time?
Let's take a look at each of the reports in detail, start with a performance, and then go through the list:
Alexey Shipilev - Performance: What's in My Name?
Redesigned, supplemented and expanded keynote with Joker 2016 about optimizations in large projects: general principles and relationships; project life cycle and economics of optimizations; benchmark life cycle; typical traps in which performance engineers find themselves.
More hardcore, more detail, more timing, even more crooked curve named "Sh"!
As always, we have something to listen to about the guts (in fact, this is the largest section): all about how the JVM works and will work in the near future under the hood, and what needs to be done to get exactly what happens under the hood what you need.
Charles Nutter - More Than You Want to Know about Java's String
Here, in fact, is the answer to the question from the headline: Charles goes to Siberia to talk about those thongs that are familiar and familiar to all Java developers. After all, they are everywhere: in the API, in the fields of objects, in almost any interaction of the JVM with the outside world. However, the implementation of String in Java is not without drawbacks: this will be discussed, which will be illustrated by atypical examples of the use of strings. In addition, we will see how our problems were solved in other languages and which libraries can help in solving them.
Vladimir Ivanov - Techniques for code vectorization in JVM
In this report, we will talk about how vector processor extensions look like and what tricks the JVM has to go to keep them idle: CPU dispatching, VM intrinsic, and automatic bytecode vectorization in JIT compilers. A specialized vector API (Vector API) will also be mentioned, work on which is actively carried out in Project Panama.
Alexey Shipilev - Shenandoah: the garbage collector that could
Shenandoah - the new garbage collector from Red Hat, which is trying to solve the problem of moving objects without stopping the application, thereby reducing pauses even more. This report is about the design and implementation features of Shenandoah, the strengths to be proud of, and the weaknesses to put up with.
Volker Simonis - Analyzing HotSpot Crashes
In this report, we will deal with what you can dig into the error files that the HotSpot crash handler creates, as well as how these files can help us analyze and reproduce the system crash. In addition, let's look at tools, such as HotSpot Serviceability Agent, which allow you to look into native kernel files and extract the necessary data from them, which would not be easy to get with a standard debugger.
Nikita @pjBooms Lipsky - Java 9 Modules. Why not OSGi?
In Java 9, modules are bound to appear. Someone doesn’t care much, someone scares, someone sincerely wonders: why, after all, for more than 15 years we have had OSGi that solves exactly the same problems as the modules?
In this report, Nikita will try to figure out what problems OSGi is trying to solve, how he solves them and whether he really solves them. Then he will tell you what problems OSGi is trying to solve, Jigsaw does not solve at all, and why, and what problems it solves and how. Well, at the end of the report: what problems does Jigsaw bring to the Java ecosystem at the same time, and what should be done with it.
Dmitry Chuyko - “Premature” compilation - is this normal?
Oracle JDK 9 introduces static (ahead-of-time) code compilation. We have already discussed why this is necessary and the scope of the current implementation. It's time to talk about the technical details: What information is generated and how AOT works, how does the compiled AOT code interact with Hotspot? What can external tools do with AOT code, and how to integrate into the compilation process? And, of course, which twists can be twisted, and what will be the performance when using AOT?
Ivan Krylov - The Life Cycle of the JIT Code
Everyone knows what JIT does. Do you know how he does it? How does the compiler make decisions and what consequences can its errors lead to? Ivan will talk about the mechanisms for collecting profiles and transition algorithms between different versions of compiled code, as well as interfaces for interacting with JIT.
Having tools is good, but being able to use them correctly is even better. In this section, let's describe the reports on the tools that allow you to comfortably work with bigdata, search, distributed systems and concurrency:
Alexey @zaleslaw Zinoviev - Kafka pours, and Spark rakes!
In a typical TK for real-time analytics, there are often points that it is necessary to calculate “on the fly” some aggregated values for a short period of time, filter the flow, reducing the load on the subsequent stages of the calculations. Quite often, we can see projects where teams organize their “data pool” in Amazon, simply dumping all incoming events in Kafka. Will Spark handle streams from Kafka? And if he copes, then at what cost and what will help him in this? Do not wait for the introduction to Spark, RDD, talk about Big Data. One case - one solution - a bit of theory - we correct configs - we write the code.
Victor @gAmUssA Gamow - The Shine and Poverty of Distributed Streams
Are you one of those who pursue productivity by stuffing it into any cycle
In it, Victor will talk about all the details of distributed processing, introduce the audience to his friend, the Oriented Acyclic Graph, and show how information processing is organized on top of the Java 8 Stream API. Distributed! High performance! "In mind"!
Philipp Krenn - Full-Text Search Explained
Full-text search is what many expect from today's applications. The question is whether it is difficult to implement. The answer is not as difficult as it seems.
From this report you will learn how full-text search works, and what is the difference in working with different databases; how to properly evaluate the quality and speed of the search; how to embed all this into your application using Elasticsearch.
Cyril @tolkkv Tolkachev - The Curse of the Spring Test
The simpler the tool, the more magic it does “under the hood”. Spring Boot is no exception. Moreover, few people think about what happens when using the familiar tools described in the Spring Test documentation.
Together with Cyril, the main developer of Alpha Laboratory, we will figure out the details of which rake we carefully laid here and there. To do this, we will test a “typical” application and ask ourselves questions that any developer using Spring and furiously implementing Spring Boot on his projects should ask.
Yakov Zhdanov - Scalability in distributed in-memory systems
Unfortunately, the performance of distributed systems on a large scale almost never shows a linear increase in the number of machines involved. Using Apache Ignite as an example, let’s see what the programmer’s job is in building a distributed system, and what the framework is in. Let's look at the internal components of Apache Ignite, which are responsible for parallelism and scaling, and consider the most important trade-offs and contradictions that arise when designing applications based on in-memory systems.
Programming is not only about writing code, it is, as McConell once said, design. You may have your own style, but in order for him to have the right to life, you should know how tasks are solved correctly. Here we have collected reports from which you can learn about the correct approaches and methods for solving known problems from the areas of concurrency, competition and code analysis.
Tagir @lany Valeev - Java inspections in IntelliJ IDEA: what could go wrong?
IntelliJ IDEA constantly emphasizes your code, offering to replace it with something better. Sometimes the results seem magical. How does the IDE do this? How does he understand your code, how does he generate new code to replace the old one, and what are the pitfalls?
We will see what a typical code inspection in IntelliJ IDEA consists of and how much gray hair the IDE developers have in order for you to improve your code with a single click.
Andrey Ershov - CRDT. Resolve conflicts better than Cassandra.
Think only: the infrastructure of several data centers with asynchronous replication and lack of coordination, giving accessibility and correct operation in the conditions of network segmentation, as well as lightning-fast response on the client and optimistic UI. Why doesn't everyone have this? All this can lead to competitive changes, and competitive changes lead to conflicts that cannot be resolved by simple conflict resolver on timestamps.
However, the problem can be solved using CRDT (Conflict-free replicated datatypes). In this report, Andrew will talk about the different types of CRDT, their advantages and disadvantages, as well as the limits of applicability of CRDT.
Nikita Koval - Dynamic search for potential deadlocks in multi-threaded Java applications
Deadlocks are one of the most pressing problems in the development of multi-threaded applications. As part of this report, the Dl-Check tool used to search for potential deadlocks will be considered. During the development of such a tool, one cannot do without bytecode instrumentation, for the implementation of which the ASM framework is the de facto standard. In the first part of the report, the main algorithm of the specified tool will be presented, which allows you to effectively find potential deadlocks during the application. The second part of the report will be devoted to the instrumentation of bytecode, as well as useful techniques and non-trivial problems associated with it.
Egor @ yegor256 Bugaenko - Utility classes are killing us
As a technique in Java and many other object-oriented languages, utility classes are very convenient for providing access to popular procedures from different places in the code. Thousands of such classes and procedures can be found in Apache Commons, Guava, and the JDK. However, can this approach really be called object-oriented and do utility classes make our code cleaner and more understandable? Do we need these procedures in OOP? If not needed, then what is the alternative? How in Java can we reuse code without utility classes? These are far from all the questions that Yegor Bugaenko will raise in his report, but not all at once.
Oleg @olegchir Chirukhin - Devops: now Java does not slow down
I take this opportunity to remind you that DevOps - it is like the Glory of the CPSU - is not a person at all. And Oleg’s report is devoted to how to properly “cook” DevOps on Java projects so that the old Java woman gives a light to fashionable Golang and node.js on support and deployment issues. What infrastructure management tools allow you to make the life of admins better, and the developer’s life more interesting, richer and more productive.
It will be useful to recall that in addition to reports at the conference, discussion zones will operate : after each of the reports, the speaker and everyone who wants to ask him questions will be towed to a special zone where participants will have the opportunity to talk with the speaker for another hour and a half - until the end of the next slots with reports.
In general, there will really be a lot of interesting things, and if you live in Siberia and write in Java, we will be glad to see you in JBreak. Registration is open, welcome to the conference website .
Everything turned out well, and Charles planned visits to Novosibirsk (JBreak, April 4) and to Moscow (JPoint, April 7-8). We have already done a review of the JPoint 2017 program , so our hands reached JBreak 2017. Under the cut - there is a long post about everyone who will speak in Novosibirsk and about everything that they will tell.
In total, the program will have 21 reports. Let's see what topics are included in the program this time?
- JVM guts (and upcoming Java 9, by the way): JVM modularization, AOT and JIT compilation, vectorization, GC and Foreign Functions work.
- Framework: Spark, Kafka, Spring, Hazelcast Jet, Elasticsearch.
- Patterns and approaches: Deadlock Prevention, Static Code Analysis and CRDT.
- Performance, of course. There is only one separate report on performance (from Alexei Shipilev, of course), but almost all reports will somehow allow you to improve the performance of your solutions.
Let's take a look at each of the reports in detail, start with a performance, and then go through the list:
Alexey Shipilev - Performance: What's in My Name?
Redesigned, supplemented and expanded keynote with Joker 2016 about optimizations in large projects: general principles and relationships; project life cycle and economics of optimizations; benchmark life cycle; typical traps in which performance engineers find themselves.
More hardcore, more detail, more timing, even more crooked curve named "Sh"!
Anatomical Atlas JVM
As always, we have something to listen to about the guts (in fact, this is the largest section): all about how the JVM works and will work in the near future under the hood, and what needs to be done to get exactly what happens under the hood what you need.
Charles Nutter - More Than You Want to Know about Java's String
Here, in fact, is the answer to the question from the headline: Charles goes to Siberia to talk about those thongs that are familiar and familiar to all Java developers. After all, they are everywhere: in the API, in the fields of objects, in almost any interaction of the JVM with the outside world. However, the implementation of String in Java is not without drawbacks: this will be discussed, which will be illustrated by atypical examples of the use of strings. In addition, we will see how our problems were solved in other languages and which libraries can help in solving them.
Vladimir Ivanov - Techniques for code vectorization in JVM
In this report, we will talk about how vector processor extensions look like and what tricks the JVM has to go to keep them idle: CPU dispatching, VM intrinsic, and automatic bytecode vectorization in JIT compilers. A specialized vector API (Vector API) will also be mentioned, work on which is actively carried out in Project Panama.
Alexey Shipilev - Shenandoah: the garbage collector that could
Shenandoah - the new garbage collector from Red Hat, which is trying to solve the problem of moving objects without stopping the application, thereby reducing pauses even more. This report is about the design and implementation features of Shenandoah, the strengths to be proud of, and the weaknesses to put up with.
Volker Simonis - Analyzing HotSpot Crashes
In this report, we will deal with what you can dig into the error files that the HotSpot crash handler creates, as well as how these files can help us analyze and reproduce the system crash. In addition, let's look at tools, such as HotSpot Serviceability Agent, which allow you to look into native kernel files and extract the necessary data from them, which would not be easy to get with a standard debugger.
Nikita @pjBooms Lipsky - Java 9 Modules. Why not OSGi?
In Java 9, modules are bound to appear. Someone doesn’t care much, someone scares, someone sincerely wonders: why, after all, for more than 15 years we have had OSGi that solves exactly the same problems as the modules?
In this report, Nikita will try to figure out what problems OSGi is trying to solve, how he solves them and whether he really solves them. Then he will tell you what problems OSGi is trying to solve, Jigsaw does not solve at all, and why, and what problems it solves and how. Well, at the end of the report: what problems does Jigsaw bring to the Java ecosystem at the same time, and what should be done with it.
Dmitry Chuyko - “Premature” compilation - is this normal?
Oracle JDK 9 introduces static (ahead-of-time) code compilation. We have already discussed why this is necessary and the scope of the current implementation. It's time to talk about the technical details: What information is generated and how AOT works, how does the compiled AOT code interact with Hotspot? What can external tools do with AOT code, and how to integrate into the compilation process? And, of course, which twists can be twisted, and what will be the performance when using AOT?
Ivan Krylov - The Life Cycle of the JIT Code
Everyone knows what JIT does. Do you know how he does it? How does the compiler make decisions and what consequences can its errors lead to? Ivan will talk about the mechanisms for collecting profiles and transition algorithms between different versions of compiled code, as well as interfaces for interacting with JIT.
Java Developer Toolbox
Having tools is good, but being able to use them correctly is even better. In this section, let's describe the reports on the tools that allow you to comfortably work with bigdata, search, distributed systems and concurrency:
Alexey @zaleslaw Zinoviev - Kafka pours, and Spark rakes!
In a typical TK for real-time analytics, there are often points that it is necessary to calculate “on the fly” some aggregated values for a short period of time, filter the flow, reducing the load on the subsequent stages of the calculations. Quite often, we can see projects where teams organize their “data pool” in Amazon, simply dumping all incoming events in Kafka. Will Spark handle streams from Kafka? And if he copes, then at what cost and what will help him in this? Do not wait for the introduction to Spark, RDD, talk about Big Data. One case - one solution - a bit of theory - we correct configs - we write the code.
Victor @gAmUssA Gamow - The Shine and Poverty of Distributed Streams
Are you one of those who pursue productivity by stuffing it into any cycle
Collection.parallelStream()
? Wondering how to do without global code rework and solve all problems with more servers? How to get distributed processing with a linear increase in productivity? If similar questions sound in your head, then this report is for you. In it, Victor will talk about all the details of distributed processing, introduce the audience to his friend, the Oriented Acyclic Graph, and show how information processing is organized on top of the Java 8 Stream API. Distributed! High performance! "In mind"!
Philipp Krenn - Full-Text Search Explained
Full-text search is what many expect from today's applications. The question is whether it is difficult to implement. The answer is not as difficult as it seems.
From this report you will learn how full-text search works, and what is the difference in working with different databases; how to properly evaluate the quality and speed of the search; how to embed all this into your application using Elasticsearch.
Cyril @tolkkv Tolkachev - The Curse of the Spring Test
The simpler the tool, the more magic it does “under the hood”. Spring Boot is no exception. Moreover, few people think about what happens when using the familiar tools described in the Spring Test documentation.
Together with Cyril, the main developer of Alpha Laboratory, we will figure out the details of which rake we carefully laid here and there. To do this, we will test a “typical” application and ask ourselves questions that any developer using Spring and furiously implementing Spring Boot on his projects should ask.
Yakov Zhdanov - Scalability in distributed in-memory systems
Unfortunately, the performance of distributed systems on a large scale almost never shows a linear increase in the number of machines involved. Using Apache Ignite as an example, let’s see what the programmer’s job is in building a distributed system, and what the framework is in. Let's look at the internal components of Apache Ignite, which are responsible for parallelism and scaling, and consider the most important trade-offs and contradictions that arise when designing applications based on in-memory systems.
Code Complete: JBreak edition
Programming is not only about writing code, it is, as McConell once said, design. You may have your own style, but in order for him to have the right to life, you should know how tasks are solved correctly. Here we have collected reports from which you can learn about the correct approaches and methods for solving known problems from the areas of concurrency, competition and code analysis.
Tagir @lany Valeev - Java inspections in IntelliJ IDEA: what could go wrong?
IntelliJ IDEA constantly emphasizes your code, offering to replace it with something better. Sometimes the results seem magical. How does the IDE do this? How does he understand your code, how does he generate new code to replace the old one, and what are the pitfalls?
We will see what a typical code inspection in IntelliJ IDEA consists of and how much gray hair the IDE developers have in order for you to improve your code with a single click.
Andrey Ershov - CRDT. Resolve conflicts better than Cassandra.
Think only: the infrastructure of several data centers with asynchronous replication and lack of coordination, giving accessibility and correct operation in the conditions of network segmentation, as well as lightning-fast response on the client and optimistic UI. Why doesn't everyone have this? All this can lead to competitive changes, and competitive changes lead to conflicts that cannot be resolved by simple conflict resolver on timestamps.
However, the problem can be solved using CRDT (Conflict-free replicated datatypes). In this report, Andrew will talk about the different types of CRDT, their advantages and disadvantages, as well as the limits of applicability of CRDT.
Nikita Koval - Dynamic search for potential deadlocks in multi-threaded Java applications
Deadlocks are one of the most pressing problems in the development of multi-threaded applications. As part of this report, the Dl-Check tool used to search for potential deadlocks will be considered. During the development of such a tool, one cannot do without bytecode instrumentation, for the implementation of which the ASM framework is the de facto standard. In the first part of the report, the main algorithm of the specified tool will be presented, which allows you to effectively find potential deadlocks during the application. The second part of the report will be devoted to the instrumentation of bytecode, as well as useful techniques and non-trivial problems associated with it.
Egor @ yegor256 Bugaenko - Utility classes are killing us
As a technique in Java and many other object-oriented languages, utility classes are very convenient for providing access to popular procedures from different places in the code. Thousands of such classes and procedures can be found in Apache Commons, Guava, and the JDK. However, can this approach really be called object-oriented and do utility classes make our code cleaner and more understandable? Do we need these procedures in OOP? If not needed, then what is the alternative? How in Java can we reuse code without utility classes? These are far from all the questions that Yegor Bugaenko will raise in his report, but not all at once.
Oleg @olegchir Chirukhin - Devops: now Java does not slow down
I take this opportunity to remind you that DevOps - it is like the Glory of the CPSU - is not a person at all. And Oleg’s report is devoted to how to properly “cook” DevOps on Java projects so that the old Java woman gives a light to fashionable Golang and node.js on support and deployment issues. What infrastructure management tools allow you to make the life of admins better, and the developer’s life more interesting, richer and more productive.
It will be useful to recall that in addition to reports at the conference, discussion zones will operate : after each of the reports, the speaker and everyone who wants to ask him questions will be towed to a special zone where participants will have the opportunity to talk with the speaker for another hour and a half - until the end of the next slots with reports.
In general, there will really be a lot of interesting things, and if you live in Siberia and write in Java, we will be glad to see you in JBreak. Registration is open, welcome to the conference website .