Charles Nutter is a Red Hat JVM developer based on OpenJDK, the main maintainer of the JRuby project, Java Champion and Ruby Hero, a first-class specialist and speaker of many Java conferences. For the first time, he came to Russia last year on Joker 2016, where he made two
hardcore reports , after which he admitted that he did not expect such a warm welcome and decided to return to Russia by all means:
Everything went well, and Charles planned visits to Novosibirsk (JBreak, April 4) and to Moscow (JPoint, April 7-8). We have already done the
review of the JPoint 2017 program , so our hands have reached JBreak 2017. Under the cut there is a long post about everyone who will perform in Novosibirsk, and about everything they will tell.
In total, the program will be 21 reports. Let's see what topics entered the program this time?
- The intestines of JVM (and the upcoming Java 9, by the way): JVM modularization, AOT and JIT compilation, vectorization, the work of GC and Foreign Functions.
- Frameworks: Spark, Kafka, Spring, Hazelcast Jet, Elasticsearch.
- Patterns and approaches: preventing deadlocks, static code analysis and CRDT.
- Performance, of course. There is only one separate report on productivity (by Alexey Shipilev, of course), but almost all reports will in one way or another allow you to improve the performance of your decisions.
Let's look in detail at each of the reports, let's start with a performance, and then go through the list:
Alexey Shipilev - Performance: What is In My Name to You?')
Revised, augmented and expanded keyout with Joker 2016 about optimizations in large projects: general principles and relationships; project life cycle and optimization economics; benchmark life cycle; typical traps in which performance engineers find themselves.
More hardcore, more details, more timing, even more curve curve of the name "W"!
Anatomical Atlas JVM
As always, we have something to listen to about the intestines (in fact, this is the largest section): everything about how the JVM works and will work in the near future under the hood, and what needs to be done so that exactly under the hood you need
Charles Nutter - Java's StringHere, in fact, is the answer to the question from the title: Charles goes to Siberia to talk about those very familiar and familiar strings 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 flaws: this will be discussed, which will be illustrated by atypical examples of using strings. In addition, we will look at how our problems were solved in other languages and which libraries can help in solving them.
Vladimir Ivanov - Code vectorization techniques in JVMThis talk will talk about how the vector expansions of the processor look now and what tricks the JVM has to go to keep them idle: CPU dispatching, VM intrinsic, and automatic vectorization of bytecode in JIT compilers. A specialized vector API (Vector API) will also be mentioned, the work on which is actively carried out in Project Panama.
Aleksey Shipilev - Shenandoah: a garbage collector that couldShenandoah is Red Hat's new garbage collector, which is trying to solve the problem of moving objects without stopping the application, thereby knocking off pauses even more. This report is about the features of the design and implementation of Shenandoah, the advantages to be proud of, and the disadvantages that you have to put up with.
Volker Simonis - Analyzing HotSpot CrashesThis report will deal with the fact that you can dig out the files with errors created by the HotSpot crash handler, as well as how these files can help us with analyzing and reproducing the system crash. In addition, we will look at tools, such as the HotSpot Serviceability Agent, which allow you to look into the native kernel files and extract the necessary data from them, which would be difficult to obtain using a standard debugger.
Nikita @pjBooms Lipsky - Java 9 Modules. Why not OSGi?In Java 9, modules will inevitably appear. Someone cares a little, someone scares, someone sincerely wonders: why, because we have OSGi for more than 15 years, which 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 it solves them and whether it solves them in reality. Then he will tell you what problems OSGi is trying to solve, Jigsaw does not solve at all and why, and which problems it solves and how. Well, at the end of the report: what problems does Jigsaw bring to the Java ecosystem and what needs to be done about it.
Dmitry Chuiko - “Premature” compilation - is this normal?In Oracle JDK 9, a static (ahead-of-time) compilation of code has appeared. We have already discussed why this is needed, and the scope of the current implementation. It's time to talk about the technical details: What information is generated and how does AOT work, how does the compiled AOT code interact with Hotspot? What can you do with AOT code with external tools, and how to integrate into the compilation process? And, of course, which twisters can be twisted, and what will be the performance when using AOT?
Ivan Krylov - The life cycle of the JIT codeEveryone knows what JIT does. Do you know how he does it? How does the compiler make decisions and what consequences can its errors cause? 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 block, let us describe the reports on tulam, allowing you to work comfortably with bigdata, search, distributed systems and parallelism:
Aleksey @zaleslaw Zinoviev - Kafka is pouring, and Spark is raking!In a typical real-time analysis of TK, there are often items that need to calculate on the fly some aggregated values over 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 “little data lake” at Amazon, simply dumping all the coming events at Kafka. Will Spark handle the streams from Kafka? And if it does, at what cost, and what will help him in this? Do not wait for the report introduction to Spark, RDD, talk for Big Data. One case - one solution - a bit of theory - we rule configs - we write code.
Victor @gAmUssA Gamov - Glitter and poverty of distributed streamsAre you one of those who are chasing performance by stuffing into any
Collection.parallelStream()
cycle? Wondering how to do without global alteration of the code and solve all the problems with the help of more servers? How to get distributed processing with a linear increase in performance? If such questions sound in your head, then this report is for you.
In it, Victor will tell about all the details of distributed processing, introduce the listeners to his friend - Oriented Acyclic Graph - and show how information processing is organized using the top of the Java 8 Stream API. Distributed! High performance! "In mind"!
Philipp Krenn - Full-Text Search ExplainedFull-text search is what many expect from modern 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 evaluate the quality and speed of search; how to implement all this into your application using Elasticsearch.
Kirill @tolkkv Tolkachev - Curse Spring TestThe 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 Lab, we will understand the details of what rake we carefully planted here and there. To do this, we will test the “typical” application and ask ourselves the questions that any developer should ask who use Spring and violently implement Spring Boot on their projects.
Jacob Zhdanov - Scalability in distributed in-memory systemsUnfortunately, the performance of distributed systems on a large scale almost never shows linear growth relative to the number of machines involved. Using the example of Apache Ignite, let's see what the programmer’s job is in building a distributed system, and what the framework’s work is. Let's look at the internal Apache Ignite components 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 McConnell once said, construction. You may have your own style, but in order for him to have the right to life, you should know how to solve problems correctly. Here we have collected reports from which you can learn about the right approaches and ways to solve known problems in the field of concurrency, competition and code analysis.
Tagir @lany Valeev - Java inspections in IntelliJ IDEA: what can go wrong?IntelliJ IDEA constantly emphasizes your code, offering to replace it with something better. Sometimes the results just seem magical. How does the IDE do this? How does your code understand, how does it generate a new code to replace the old one and what are the pitfalls here?
We’ll see what a typical code inspection in IntelliJ IDEA consists of and how much gray hair appears to IDE developers in order for you to improve your code with one click.
Andrei Ershov - CRDT. Solve conflicts better than CassandraJust think: the infrastructure of several data centers with asynchronous replication and lack of coordination, giving accessibility and correct operation in network segmentation conditions, as well as lightning-fast response on the client and an optimistic UI. Why is this still not all? All this can lead to competitive changes, and competitive changes lead to conflicts that cannot be solved by a simple conflict resolver at timestamps.
However, the problem can be solved with 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 multithreaded Java applicationsDeadlocks are one of the most pressing problems in developing multi-threaded applications. As part of this report, the Dl-Check tool used to find potential deadlocks will be reviewed. In the course of developing such a tool, one cannot do without byte-code 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 this tool will be presented, which allows you to effectively find potential deadlocks in the process of the application. The second part of the report will be devoted to bytecode instrumentation, as well as useful techniques and non-trivial problems associated with it.
Yegor @ yegor256 Bugaenko - Utility-classes kill usAs a technique in Java and many other object-oriented languages, utility classes are very convenient for providing access to popular procedures from different places of code. Thousands of such classes and procedures can be found in Apache Commons, Guava and in the JDK. However, can this approach be called object-oriented, and do utility classes make our code cleaner and clearer? Do we need these procedures in the PLO? If not, what is the alternative? How in Java can we reuse code without utility classes? These are not all the questions that Yegor Bugayenko will raise in his report, but not all at once.
Oleg @olegchir Chirukhin - Devops: now Java does not slow downI take this opportunity to remind you that DevOps - he, like the Glory of the CPSU, is not a human being at all. And Oleg's report is devoted to how to properly "prepare" DevOps on Java projects, so that the old Java would give a light to the fashionable Golang and node.js in matters of maintainability and deployment. What kind of infrastructure management tools can make the admin's life better, and the developer's life more interesting, richer and more productive.
It will be useful to remind that, apart from the reports at the conference, there will be
discussion zones : 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 communicate 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 happy to see you on JBreak. Registration is open, welcome
to the conference website .