@nipafx@mastodon.social
@nipafx@mastodon.social avatar

nipafx

@nipafx@mastodon.social

#Java enthusiast focused on language features, core APIs, and runtime evolution with a passion for learning and sharing - mostly at conferences and in his biweekly Inside Java Newscast. He's a Java Developer Advocate at Oracle (views are his own) and otherwise best known for his haircut.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

nipafx, to Java
@nipafx@mastodon.social avatar

What is data-oriented programming and how does it work in #Java? After Brian Goetz first described it in his seminal article "Data-Oriented Programming in Java" in June 2022, I propose a revised version 1.1 and give detailed advice on how to implement it in a six-part article series on inside.java.

Here's the first part with the revised four guiding principles:

https://inside.java/2024/05/23/dop-v1-1-introduction/

nipafx,
@nipafx@mastodon.social avatar

To model data immutably and transparently is one of the four principles of data-oriented programming in . In my second article in this series, I explore why immutability and transparency are important when modeling data and how to use Java's features, particularly records, to achieve that.

https://inside.java/2024/05/27/dop-v1-1-immutable-transparent-data/

nipafx,
@nipafx@mastodon.social avatar

Data-oriented programming centers around modeling data as closely as possible and so a core principle is:

Model the data, the whole data, and nothing but the data.

This is best achieved with a mix of records, sealed types, and some programming practices that may seem odd to the object-oriented developer.

More on all that in the third article in the series:

https://inside.java/2024/05/29/dop-v1-1-model-data/

nipafx, to random
@nipafx@mastodon.social avatar

Today I decided: The German translation of "fall-through" (as in "switch statements allow fall-through") is "Durchfall".

nipafx, to Java
@nipafx@mastodon.social avatar

Big string template revamp - processors are out! 😳

"Processors were envisioned as a means to abstract the transformation of templates to their final form. However, Java already has a well established means of abstracting behavior: methods."

https://mail.openjdk.org/pipermail/amber-spec-experts/2024-March/004010.html

Next

nipafx, to Java
@nipafx@mastodon.social avatar

22 is coming! Join us on March 19th at 17:00 UTC for a live-stream event to celebrate another great release with technical deep dives, expert guests, a community update, and an exciting announcement.

https://dev.java/community/java-22-launch/

nipafx, to Java
@nipafx@mastodon.social avatar

Don't worry if you missed the stream. You can watch it here for the next ~60 days: https://www.twitch.tv/videos/2050175537

After that I may upload an edited version to my YouTube channel (https://youtube.com/nipafx) but that'd take quite some time and energy. Leaving a subscription may motivate me. 😊

nipafx, to Java
@nipafx@mastodon.social avatar

I hope everybody had a great few days with friends and family! 🎄🎁🥂

But... just in case you need something to take the edge off 😬, may I interest you in my 2023 review?

https://www.youtube.com/watch?v=NxpHg_GzpnY

nipafx, to random
@nipafx@mastodon.social avatar

Project Valhalla may end up introducing ! and ? for value types, e.g. Integer! i = 0; and then i can't be null and can hence be treated like an int. Is there a road from there to String!? And what does JSpecify have to do with that?

https://www.youtube.com/watch?v=Re5HvyUtIJ0

nipafx, to random
@nipafx@mastodon.social avatar

Tired of every null tracker having their own annotations and implementing their own logic? Then JSpecify is for you! Here's Kevin Bourrillion presenting it on my live stream:

https://www.youtube.com/watch?v=HS_kA42YNkU

nipafx, to random
@nipafx@mastodon.social avatar

Babylon is 's newest big project, aimed at easing execution of Java code on the GPU, which will unlock machine learning and artificial intelligence on the JVM. More about it's background, prototypes, and plans in the latest Inside Java Newscast:

https://www.youtube.com/watch?v=q8pxRkdKeR0

nipafx, to Java
@nipafx@mastodon.social avatar

Remember earlier this week, when 's stream API didn't have that intermediate operation you needed? It will soon get it.

Which operation am I talking about? All of them! Thanks to Gatherers, we can easily implement our own intermediate operations that seamlessly fit into any pipeline:

https://www.youtube.com/watch?v=epgJm2dZTSg

nipafx,
@nipafx@mastodon.social avatar

After going over the theory ☝️🏾, watch me implement a bunch of operations with the Gatherer API:

  • map
  • filter
  • flatMapIf
  • takeWhileIncluding
  • limit
  • increasing
  • runningAverage
  • fixedGroups
  • slidingWindow
  • sorted
  • increasingSequences

https://www.youtube.com/watch?v=pNQ5OXMXDbY

nipafx, to Java
@nipafx@mastodon.social avatar

Are there any plans to invest into on Desktop? Is work being done to make virtual threads scale better with synchronization? And why is MathContext so clunky?

I asked these and more of your questions to the Java architects - here are their answers: https://www.youtube.com/watch?v=WoQJnnMIlFY

aeveltstra, to Java
@aeveltstra@mastodon.social avatar

Advances in the #java #programming language, version 16 and newer, slashed a million lines of code from my codebase. Maintaining my programs became easier overnight, due to this 1 secret trick: Records.

Unfortunately version 16 was not LTS, so I had to wait until this year's release of version 21, which is LTS.

Go read this article on Java Records: https://medium.com/naukri-engineering/avoid-lombok-use-records-to-write-cleaner-code-in-java-17-b174548a6f5f

nipafx,
@nipafx@mastodon.social avatar

@aeveltstra Thanks for the recommendation and the follow. 😃 Depending on your preferred way to consume Java news (text or video), you may also want to check out https://inside.java and https://youtube.com/@java.

nipafx, to Java
@nipafx@mastodon.social avatar

Will get if/else and try/catch expressions or union types? Why are there no named arguments or mutable records? What about ML, AI, and gaming and when will Valhalla land?

I asked @briangoetz these and more of your questions:
https://www.youtube.com/watch?v=mE4iTvxLTC4

nipafx, to Java
@nipafx@mastodon.social avatar

Couldn't be there on Tuesday for the 21 live stream? Or maybe just not the entire 8 hours? 😳

No worries, the video is up under the same URL (https://youtube.com/watch?v=E8NV68ihJyY) and I just added time stamps, so you can easily skip to the portion you find most interesting.

Maybe the pattern matching Q&A with @briangoetz? Maybe the CloudWorld Java panel with @Sharat_Chander and others? 😁

Enjoy!

nipafx, to Java
@nipafx@mastodon.social avatar

Excited for the 21 launch? So are we! 🥳

So much so that we'll be talking about it for 8 hours straight: technical explorations, expert interviews, and community voices at Paris JUG and @jugka

Be there on Tuesday, Sep 19th, 13:00-21:00 UTC! (That's 15:00-23:00 for my European followers.)

Details and a link to the stream on YouTube: https://dev.java/community/java-21-launch/

nipafx,
@nipafx@mastodon.social avatar

We'll be diving into all the great things 21 has on offer:

We'll talk to @mreinhold about the release process, we'll have a big reveal for you, and we'll hear from people at Oracle CloudWorld and JUGs Paris and Karlsruhe. All that moderated by @ammbra1508, Billy, and myself.

Register now: https://www.youtube.com/watch?v=E8NV68ihJyY

nurkiewicz, to random
@nurkiewicz@fosstodon.org avatar

I don't always git push --force. But when I do, I use --force-with-lease to avoid erasing other people's changes

nipafx,
@nipafx@mastodon.social avatar

@nurkiewicz This! I'm mildly annoyed that I can't set a flag in .gitconfig that requires a lease for every force push. And once that exists, it should be on by default, tbh.

nipafx, to Java
@nipafx@mastodon.social avatar

We got something special for you: Put your boots on and come with us on the . First video goes live tomorrow.

https://youtube.com/@java

video/mp4

nipafx,
@nipafx@mastodon.social avatar

Are you planning an update to 21? Wondering what could go wrong?

Then you don't want to miss the first episode! It covers all you need to know to for your step from 17 to 21: changes in APIs, encoding, runtime, tools, deprecations, and much more. But we'll also go beyond the nitty-gritty details and see the bigger picture of how to best prepare and execute your Java and 3rd party updates:

https://www.youtube.com/watch?v=5jIkRqBuSBs

nipafx, to Java
@nipafx@mastodon.social avatar

📣 21 is no long-term support version!

Don't worry, there'll be plenty of JDK 21 builds that get free, timely updates and lots of companies that offer commercial support, but that doesn't make 21 "an LTS version". Let's talk semantics! 🧵

Or, if you prefer video, watch the latest Inside Java Newscast: https://www.youtube.com/watch?v=3bfR22iv8Pc

nipafx, to Java
@nipafx@mastodon.social avatar

The latest Inside Java Newscast goes over what happened in 21 after I recorded the last one:

  • scoped values
  • KEM API
  • dynamic agent warning
  • new JFR command
  • lots of API improvements
  • and more!

https://www.youtube.com/watch?v=MT3_2VyP_YY

Let's have a closer look at the API changes. 🧵

nipafx, to programming
@nipafx@mastodon.social avatar

21 will be bonkers!

So.
Many.
Features!
Finalized, improved, brand-new - a ton of each.

I'll tweet them out one by one throughout the day with links to JEPs and videos. 🧵 If you can't wait that long, watch today's Inside Java Newscast:

https://www.youtube.com/watch?v=qGaUZ1Z34jw

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • thenastyranch
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • provamag3
  • magazineikmin
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • anitta
  • Leos
  • tester
  • JUstTest
  • All magazines