My talks
I started giving public and mostly IT-related talks in 2016. Until now (December 2024) I delivered over 160 talks in various formats, from Pecha Kucha (20 slides x 20 seconds each) to Deep Dive (3h long). I spoke in Poland and Europe, and the US, and in Africa, both at small community events, both in huge cinema rooms. Many of my talks (but not all of them) have both English and Polish versions. Some have been given many times, some just once, some were given awards, and all were made with passion.
I’ve attended as a speaker several conferences and Java User Groups, including: 4Developers Festival, BoilingFrogs, ChamberConf, CodeCamp Romania, CodeMotion Milan, CodeMotion Spain, CoffeeJUG Lviv, Confitura, dev2next, Devoxx Belgium, Devoxx France, Devoxx Greece, Devoxx Morocco, Devoxx Poland, Devoxx UK, Devoxx Ukraine, GDG DevFest Toulouse, GDG DevFest Wroclaw, GeeCON Poland, GeeCON Prague, GreenField Conf, Infoshare, Java Developer Days, JavaDays Lviv, JavaLand, Javeloper, JAVIPS, JCon Europe, Jfokus, jLove, JNation, JPoint, jPrime, JSpring, ScalaLove, SegFault (& CoreDump), SpreadIT, VoxxedDays Luxembourg, VoxxedDays Romania, VoxxedDays Zurich, Ya!va Conf, ChicagoJUG, SilesiaJUG, TricityJUG, UtrechtJUG, VirtualJUG, WarsawJUG, WroclawJUG, SzczecinJUG, Zielona Góra JUG, and others.
When I have time to talk about Java for more than one hour, it’s a Deep Dive (I call it “What’s new and noteworthy?”)
When I have less than forty minutes, we can barely touch the surface, hence it’s called then “Surfing Modern Java”.
Anything in between, like regular-size talk, is more than surfing, but less than deep dive, hence “Sailing Modern Java”.
For such a talk I usually cover one or two latest releases, sometimes mentioning what’s ahead of us, trying to sneak in as many code demos as I can.
Hey, there are two major Java versions released every year! We don’t have to wait 3 years or so for new features anymore. Isn’t that cool? 😉
Java was supposed “to be slow”. However, Java turns out to evolve so fast, that next releases aren’t just version bumps, but might significantly change the rules of the game. That’s a good reason to check out what’s new in Java.
To name a few changes:
“You can never understand one language until you understand at least two.” – Geoffrey Willans
For years, I’ve been developing mostly in JVM languages. Sometimes in other C-derived languages, which was both cool and easy.
A few months ago (due to a career shift) I had to learn Go rapidly. While technically Go has keywords looking similar to C, many things are simply different and even unheard of in C-based OOP languages. Learning Go is a great journey and the best are these AH-HA moments, when doing things in Go I suddenly understood Java better.
Modern Java is really awesome when it comes to “Hello, World!” demos. It’s also cool for a sophisticated systems and algorithms, provided their authors write code which obeys a few fairly simple contracts and avoids obvious traps.
There are a few mantras regarding recent features of modern Java, such as:
- records can replace JavaBeans everywhere
- you never need to write
hashCode() for records - pattern matching with
instanceof is the best tool for equals() - just ignore
--illegal-access and set it to permit synchronize (new Long(42)) is the best for monitoring and so on.
This talk has been given at jLove, Doing Java Better and Java Day Lviv.
Another (half a) year has passed, another major Java™ version has been released.
Java was supposed “to be slow”. However, Java turns out to evolve so fast, that next releases aren’t just version bumps, but might significantly change the rules of the game. That’s a good reason to check out what’s new in Java.
We’re going to cover:
- Records, where and how to use them, apart from DTO/VO
- Pattern matching with instanceof A.K.A. Smart casting
- Sealed classes, new dimension of types extensibility (for inheritance)
- Warnings from Jigsaw (–illegal-access strikes back!)
- And Valhalla (for value-based classes abuse)
- Talking to native stuff from Panama
- and more.
All visualised in actual code, not just slides.
Another (half a) year has passed, another major Java™ version has been released.
Java was supposed “to be slow”. However, Java turns out to evolve so fast, that next releases aren’t just version bumps, but might significantly change the rules of the game. That’s a good reason to check out what’s new in Java.
We’re going to cover:
- Records, where and how to use them, apart from DTO/VO
- Pattern matching with instanceof A.K.A. Smart casting
- Sealed classes, new dimension of types extensibility (for inheritance)
- Warnings from Jigsaw (–illegal-access strikes back!)
- And Valhalla (for value-based classes abuse)
- Talking to native stuff from Panama
- and more.
All visualised in actual code, not just slides.
In the dark ages, we had to wait for 3-4 years to see the new Java version with some new features. Now there are two major releases every year! Can we benefit from the new features before the next LTS release?
We don’t have to wait 3 years or so for new features any more. Isn’t that cool? 😉 So… you’d like to check what has happened since Java 11? Record types? Switch expressions? Pattern matching? No more NPE? String blocks? New functions in APIs? What are the Shenandoah and ZGC about? AppCDS to speed up spin-off?
Another (half a) year has passed, another major Java™ version has been released.
Java was supposed “to be slow”. However, Java turns out to evolve so fast, that next releases aren’t just version bumps, but might significantly change the game rules. That’s a good reason for another deep dive in Java.
We’re going to cover:
- Production ready GCs: ZGC and Shenandoah, if you don’t like ice ages
- Text blocks, which make Strings easy to declare also for non-liners
- Pattern matching with instanceof A.K.A. Smart casting
- Records, where and how to use them, apart from DTO/VO
- Sealed classes, new dimension of types visibility (for inheritance)
- Hidden classes, which are so hidden, that they can’t even use themselves
- Foreign memory access, for some off-the-heap data
- Helpful NPE messages, which make chasing nulls easier than ever
And of course removed, deprecated and tuned stuff (bye bye Nashorn). All visualised in actual code, not just slides.
Java 14 brought Records as one of the preview features. For many it was reasonable to say “no more JavaBeans code generation” or “Lombok is dead”. Is that really the case? What one can do with records and what can’t? What about reflection and serialization?
\
Hey, there are two major Java versions released every year! We don’t have to wait 3 years or so for new features any more. Isn’t that cool? ;-)
So… would you like to check out what has happened in Java 14?
Switch expressions available to public?
No more NPEs?
Record types?
Pattern matching?
Text blocks?
If you find them interesting, let’s dive deep together into new interesting stuff.
This talk has been presented at Wrocław JUG and Warszawa JUG.