Jarek Ratajski | Devoxx

Jarek Ratajski
Jarek Ratajski Twitter

From engenius.ch

Jarek Ratajski - Java Developer since 1999

I love programming since my first line of code I did on the C64 in Basic. Somewhere in 90ties I've switched from C++ to java and spent then 16 Years developing JavaEE software working for various companies and projects.  Now I work for Swiss banks and insurances being Java developer during the days and Scala/ScalaJS hacker at nights.

Blog: https://twitter.com/jarek000000

java Java Language & Server Side

On @annotations - liberate yourselves from demons

Conference

Symptoms: - tedious code containing only getters and setter, - useless tests that only test mocks and NOT the business of the system, - fear of refactoring - yes, you have tests – but you do small change and suddenly injections do not work anymore :-),

Last but not least - you are so jealous hearing that other teams write great things in Scala, Python or even JavaScript in a few weeks.

I know the problem. It is not Java that is bad! The cancer is called @Annotations. Something that was introduced to liberate Java developers from XML programming hell. But after few years it became even a bigger mess.

It is time to replace annotations with better functional constructs. Let me show how, and why it is better.

java Java Language & Server Side

Ratpack  - Future<Server.HTTP<Java>>

Tools-in-Action

Have you ever heard of non blocking web servers?  Have you  tried it in Java? You should – it can totally change the way you code backend.

Let me present you how to write simple HTTP Rest Server using Ratpack library. Yes library - because it is not another vast framework.  Just a small tool for big things! I will describe how non blocking architecture works - and YES one thread can handle thousands of simultaneous HTTP connections in Java! We will see why using more threads on server is not the best option every time - and we will try to find the sweet spot for performance. We will deal with topics such as:  REST, WebSockets, persistence (with and without SQL databases), asynchronous IO, blocking IO,  RxJava 2.0, JavaSlangVavr, immutability and more.

And yes - there will be mondas, a lot of them, you are going to love them. They are terrific.

All of that on a  working example of a simple  web based multiplayer game.