Jakob Jenkov Profile
Jakob Jenkov

@jjenkov

22,198
Followers
123
Following
197
Media
8,272
Statuses

AWS Solution Architect, software developer, IT architect, runs , Java, Java Champion, web, distributed systems, decentralized systems

Copenhagen, Denmark
Joined June 2009
Don't wanna be here? Send us removal request.
@jjenkov
Jakob Jenkov
7 months
Just finished reading Clean Code. My immediate impression is that it is not one of the most useful books on software design I have read. The problem I have with books like Refactoring, Design Patterns and Clean Code is, that they tend to be a list of solutions for you to…
75
114
869
@jjenkov
Jakob Jenkov
1 year
After 23 years of #Java development - I am only just discovering :-D
14
111
581
@jjenkov
Jakob Jenkov
2 years
Thank you very much, everyone !!! :-) ... to the Java Champions for nominating me, and to all of you who have read my Java tutorials enough to even make this a possibility :-) Thank you!!
@Java_Champions
Java Champions
2 years
Congratulations to new #Java Champion @jjenkov
Tweet media one
59
56
793
41
13
516
@jjenkov
Jakob Jenkov
5 years
Just realized I have been blogging about Java, web and related technologies for 13 years now... since 2006 ! ... more than 950 articles has come out of that. I hope I have 13 more years of serving the developer community in me ;-) #Java
26
33
443
@jjenkov
Jakob Jenkov
4 years
This saturday my developer tutorial website crossed 100.000.000 page views in its life time! I guess I can call myself a blogger now ;-) Thanks to everyone who've visited my website over the years and helped reach the 100 million page view milestone :-)
53
14
434
@jjenkov
Jakob Jenkov
1 year
What are the real benefits of Functional Programming? Can anyone point me to an article explaining - not just the techniques - but an actual explanation as to why FP should be *better* than OOP? I am genuinely curious!
147
53
399
@jjenkov
Jakob Jenkov
1 year
Java 20 released today - on my birthday! Yaay! :-D #Java
55
25
322
@jjenkov
Jakob Jenkov
1 year
OpenJDK + GraalVM + TornadoVM + Maven + Jetbrains + Eclipse + Android + JavaFX + Swing + Skija + etc. ...+ new Java releases every 6 months + improving performance almost every release => Pretty solid ecosystem :-)
12
38
281
@jjenkov
Jakob Jenkov
3 years
The reboot of Java from Java 9 and forward is one of the most impressive technology reboots I have witnessed in my 20 year as a developer. Especially the Java VM is making leaps of progress - within GC and by removing dead wood. With every new Java release, #Java looks better.
13
43
256
@jjenkov
Jakob Jenkov
1 year
My #Java single-threaded concurrency solution is currently able to switch between tasks around 75-80 million times per second - on my 6 year old laptop. I guess that's enough for a lot of use cases. I still need to tweak the design a bit + add features, so the number may change.
22
22
269
@jjenkov
Jakob Jenkov
5 months
Java is not as fast as C/C++/D/Rust - but if you need performance, you can get quite a lot of performance out of Java these days! Learning how to program for performance will make a bigger difference than the language you choose! #Java
18
33
234
@jjenkov
Jakob Jenkov
2 years
The Java Streams API is not a stream processing API - but a batch processing API. A true streaming API could not have "terminal operations" - as a true stream has no "last element". And - that is just one of the things we need to talk about regarding stream processing. #Java
14
28
211
@jjenkov
Jakob Jenkov
7 months
Here are my notes about the SOLID design principles so far. I will probably be adding some comments to them over time, as I learn more about software design - but here is the first version: #SoftwareDesign #SoftwareDevelopment #SoftwareEngineering
6
42
215
@jjenkov
Jakob Jenkov
9 months
10+ years ago I decided to design my own dependency injection container (Butterfly Container) in Java. When it was finished it was around a 100 KB JAR file - and thus had the smallest code base of the available dependency injection containers at the time. Google Guice was around…
17
8
200
@jjenkov
Jakob Jenkov
2 years
With the 6 month release cadence #Java has really moved quite far the last 3 years (6 releases). Especially the GC and performance has been improved, and we have had some improvements in the language syntax itself (pattern matching etc.). Seems #Java is making a comeback :-)
8
10
187
@jjenkov
Jakob Jenkov
3 years
Hi everyone, I am back! Jakob Jenkov - the developer. Not the PS5 spam bot.
19
6
190
@jjenkov
Jakob Jenkov
11 months
Excellent article about how CPU caches work - which can be useful to know to better understand the effect of the Java "volatile" keyword. This article also points out some errors in my own understanding of caches (it references one of my tutorials). I thought I had corrected that…
2
51
202
@jjenkov
Jakob Jenkov
9 months
The more code I have read, the less sensitive I have become to "messy code". There can be several legit reasons why that code was written the way it was. Deadlines. Experience level. Different standards. Fewer features available at the time etc. In most cases - I will eventually…
17
17
188
@jjenkov
Jakob Jenkov
7 months
Currently working with a Java app that seems to have some garbage collection challenges from time to time - so I am studying how garbage collection works in more detail. This article by Frank Delporte ( @frankdelporte ) about Java garbage collection techniques was quite…
4
35
189
@jjenkov
Jakob Jenkov
11 months
GraalVM (Java VM) just made a new distribution - giving several of the features for free that were before commercial features. Meaning - you can now use these GraalVM features in production - for free! Pretty aweseome! #Java #graalvm
3
33
171
@jjenkov
Jakob Jenkov
4 years
I will return to write more about JavaFX soon... any JavaFX fans out there?? ;-) I also have a small "art project" in JavaFX that I am working on... maybe it'll one day be polished enough to showcase :-D #JavaFX
16
15
160
@jjenkov
Jakob Jenkov
1 year
AWS Lambda examples with popular #Java frameworks - shared by @MarkSailes3 - Serverless solution architect + Java enthusiast from AWS UK (thank you!!)
1
34
161
@jjenkov
Jakob Jenkov
10 months
Design patterns are good - but what is better is to understand the design thinking that lead to the design patterns. Understand that, and you won't ned to memorize all the individual design patterns. The patterns will just emerge naturally in your code as you apply the design…
6
17
158
@jjenkov
Jakob Jenkov
2 years
Do you also program "in your head" while walking around doing other things? ... or like when you are working out, or on a bike trip, or commuting etc?... or is that just me being "a bit off" :-D
47
2
147
@jjenkov
Jakob Jenkov
1 year
It's 2023 ... time to get off #Java 1.8 - if you are still stuck there πŸ˜‰ So much good stuff awaits you in the newer versions 😊
11
14
148
@jjenkov
Jakob Jenkov
3 years
After more than 20 years of "professional" programming, and 34 years of programming in total - I feel like writing down my experiences - what I have learned - more than just write about the next Java API... yes, fewer people will be interested, but my interest will be higher :-D
12
3
137
@jjenkov
Jakob Jenkov
3 years
I am currently learning about GraalVM ! That is a pretty impressive piece of engineering!
7
8
144
@jjenkov
Jakob Jenkov
2 years
Which of Java's latest or soon coming features are you most excited about? #Java
75
20
140
@jjenkov
Jakob Jenkov
2 years
I would like to see #Java as a leading decentralized, high throughput, low latency systems platform. This is a path I am exploring currently. Java's cross platform reach is really helpful here.
8
9
128
@jjenkov
Jakob Jenkov
1 year
JParse is a new, small, fast Java JSON parser with some JSON path query functionality built in - made by @RickHigh Looks pretty good so far :-) Open source, available on GitHub: #Java #json
3
30
130
@jjenkov
Jakob Jenkov
10 months
I have finished my software design introduction - laying out what I believe to be some of the fundamental concepts of software design. More tutorials with more details will come in the future. There is a textual and video version - here: …
2
31
130
@jjenkov
Jakob Jenkov
2 years
Java 18 has been released today :-) #Java
0
12
127
@jjenkov
Jakob Jenkov
3 years
About 3-4 years after designing my first Java NIO based server using non-blocking IO, I realize how it can be made better :-) Sometimes design ideas and improvements take time! :-)
5
5
125
@jjenkov
Jakob Jenkov
1 year
You can access all of my #Java tutorials from the page below. The left menu lists all bigger topics within Java that I have covered (the left-most menu column) - and to the right of that are listed the tutorials within the selected topic
7
24
130
@jjenkov
Jakob Jenkov
1 year
"Clean Code, Horrible Performance" ! @cmuratori demonstrates how following a few Clean Code rules can lead to a 20+ times worse performance for some simple calculations. There are no "right" or "wrong" designs. There are only trade-offs. #CleanCode
8
22
117
@jjenkov
Jakob Jenkov
5 years
I started working with Java in 1999... 20 years anniversary this year :-D #Java
14
4
114
@jjenkov
Jakob Jenkov
1 year
The first feature I want to play with in #Java 19 is Virtual Threads! ... code examples and tutorial coming later :-)
7
11
115
@jjenkov
Jakob Jenkov
2 years
GraalVm is just fascinating! I am looking forward to playing a whole lot more with GraalVM in the future :-) #Java #GraalVM
7
5
115
@jjenkov
Jakob Jenkov
7 months
I just realized I have been using IntelliJ IDEA since around 2003 - for 20 years now ! ... That must make me a super-fan ! Thank you @jetbrains ! #Java #IDEA
17
2
121
@jjenkov
Jakob Jenkov
2 years
Working on a video about The 7 Core Principles of Code Performance Optimization. The general techniques I use when working with performance optimization.
5
2
117
@jjenkov
Jakob Jenkov
1 year
I will start documenting my #Java single-threaded concurrency model now. The code quality isn't that great - because the code is mostly proof-of-concept level. As I document the design, and close the holes in it, I hope to increase the code quality too.
3
7
112
@jjenkov
Jakob Jenkov
3 years
The and video platform(s) are some of the coolest and most useful applications of decentralized architecture I have seen in a long time ... probably since early Skype! Way to go @LBRYcom @OdyseeTeam :-)
2
26
98
@jjenkov
Jakob Jenkov
4 years
I realized I have a lot of JavaFX examples on my HD from my JavaFX tutorials. Should I share them in a GitHub repo? Anyone interested? #JavaFX
21
2
94
@jjenkov
Jakob Jenkov
1 year
#Java provides a pretty good mix of cross platform support, cross platform UI support, reasonably high performance, a large toolkit ecosystem and a large community. Still the one of the best overall mixes out there I think, even if other languages might be better in some aspects.
9
18
104
@jjenkov
Jakob Jenkov
2 years
I have updated my Java tutorial to list what is new in Java 17: #Java #Java17
5
27
100
@jjenkov
Jakob Jenkov
6 months
LinkedIn experienced good performance gains by upgrading from Java 8 to Java 11 . Imagine if they had upgraded to Java 21 instead... I know, I know - Java 21 wasn't out at the time - but it is now πŸ˜‰ #Java
0
22
104
@jjenkov
Jakob Jenkov
1 year
Fellow developers! I would like to start a conversation about software / code design. I know we have books such as Refactoring, Design Patterns, Clean Code, Clean Architecture etc. - but I feel something is missing 1/2 #software #softwaredevelopment #sotwaredesign #programming
15
14
103
@jjenkov
Jakob Jenkov
2 years
#Java 19 seems like it will be focused on performance: Virtual threads, foreign function and memory access API, Vector API (for SIMD and Vector CPU instructions), structured concurrency etc.
3
24
91
@jjenkov
Jakob Jenkov
4 years
I apologize for updating my basic Java tutorials as much as I have lately. A lot has happened in the world of Java since I wrote the first versions of them, so I found it necessary to go back and update a lot of the more basic Java tutorials! Still do from time to time. #Java
10
2
87
@jjenkov
Jakob Jenkov
2 years
Project Loom (virtual threads in Java) looks really cool. See the talk below by Ron Pressler. Just one issue with virtual threads is - that they suffer from some of the same architectural limitations as ordinary threads (as far as I understand). #Java
1
18
89
@jjenkov
Jakob Jenkov
4 years
Seems I have reached 10K followers here on Twitter today ! Thanks a lot for the support and confidence, everyone! :-)
6
2
83
@jjenkov
Jakob Jenkov
1 year
@martinbaez While that is true in theory - the majority of bugs I come across have nothing to do with side effects or mutable state - but are caused by misunderstandings of requirements, or of the underlying language / platform, or simply missed corner cases.
10
0
90
@jjenkov
Jakob Jenkov
3 years
The biggest obstacle to learning is not that you are "stupid" - but poor learning materials - in my experience. I have often gone from "huh?" to "Aaahhh!!!" just by switching to a different explanation of the same concepts. What is your experience?
14
2
84
@jjenkov
Jakob Jenkov
1 year
I have updated my Java tutorial intro to list the new features in Java 19 - so the introduction now lists almost all new features in new Java versions going back to #Java 7 ! Do you about them all? #Java
4
11
85
@jjenkov
Jakob Jenkov
5 months
@mprkhrst @AntimetalCloud Why would you have multiple screens inside VR glasses? Why not just one big screen?
10
0
90
@jjenkov
Jakob Jenkov
10 months
I have corrected my Java volatile tutorial. Some errors had been pointed out to me by several different developers. It was time to fix it. Both text and diagrams have been fixed 😊 #Java #JavaConcurrency #JavaMultithreading
8
17
90
@jjenkov
Jakob Jenkov
2 years
JavaFX is leading the charge towards desktop applications - from web applications - where it makes sense. The idea, that by default all apps should be web apps no longer holds true, in my opinion. #Java #JavaFX
11
11
81
@jjenkov
Jakob Jenkov
11 months
There was a time, around Java 1.8 or so, where I felt a bit "left behind" working with Java, due to Java's slower evolutionary pace. But the last years of new releases every 6 months has changed that! Java keeps modernizing - and growing in capability as a platform #Java
4
9
88
@jjenkov
Jakob Jenkov
6 months
My website () now runs on Java 21 😊 I think I will use the "latest LTS" upgrade strategy for my infrastructure too - unless there is something in an in-between Java version that I really want to use - before it makes it into an LTS version. #java
8
4
86
@jjenkov
Jakob Jenkov
2 years
I've started making notes about "code quality". I realized I have a somewhat different approach than described in books such as Clean Code, so I started making notes to concretize my approach. I will share them when they are more polished :-)
6
3
79
@jjenkov
Jakob Jenkov
11 months
In Java 21 the basic public static void main class definition gets simpler, to make scripting in Java simpler. Will we actually script code in Java though? We still need a Java VM installed - whereas Linux typically comes with Python preinstalled. What do you think? #java
26
8
86
@jjenkov
Jakob Jenkov
8 months
My approach to software design - whether I am designing a API, toolkit or language - is to first make sure it can address all the use cases it is intended for. I believe this is often referred to as "expressiveness" - the amount of functionality you can "express" via th API,…
2
11
86
@jjenkov
Jakob Jenkov
2 years
As developers we constantly have to learn. Learning can sometimes be frustrating. I have published an article titled "Developer Learning Strategies" explaining how I deal with learning - when it's hard. #Developer
4
16
79
@jjenkov
Jakob Jenkov
2 years
I have updated my Java tutorial to list what is new in Java 16: #Java
0
13
82
@jjenkov
Jakob Jenkov
2 years
"Your tutorials are too short". "Your tutorials are too long". "Your tutorials have too many unnecessary details". "Your tutorials have too little detail". ... can't please them all - can you? ;-)
17
1
80
@jjenkov
Jakob Jenkov
2 years
GraalVM + TornadoVM => Amazing! TornadoVM can compile a subset of Java and move it to run on a GPU or FPGA - at runtime! #Java #GraalVM #TornadoVM
2
12
79
@jjenkov
Jakob Jenkov
8 years
@koush @timoreilly Thugs steal from people, terrorists kill civilians, and militias rebel against the government. No skin color involved.
24
11
51
@jjenkov
Jakob Jenkov
7 months
Anyone interested in how to write tokenizers and parsers etc? I am not an expert in these matters, but I have written a few parsers over the years, so I can probably explain the basics at least 😊 #SoftwareDevelopment #SoftwareEngineering #SoftwareDesign …
16
4
84
@jjenkov
Jakob Jenkov
2 years
I think we should rename "Best Practices" to "Common Practices" - as I believe this term more precisely reflect the semantics behind the term. Best practices are rarely best for all situations - but might be good for many situations - and are therefore commonly used.
6
10
77
@jjenkov
Jakob Jenkov
1 year
Wondering what is going on inside the #Java + Java VM development projects? You can follow their posts at :-)
0
16
80
@jjenkov
Jakob Jenkov
3 years
I have been fascinated with decentralized, autonomous architectures since Skype was launched ! Since then I have been collecting information about how to design such systems. Now, I finally know enough to start my own "art" project in this space :-) :-) :-) More coming soon !
4
1
80
@jjenkov
Jakob Jenkov
1 year
Need to learn Java lambda expressions? I've got both a textual tutorial plus a set of videos to help you out! Video Playlist: Text: #Java
0
16
79
@jjenkov
Jakob Jenkov
2 years
We have added so many abstraction layers to computing, that fewer and fewer people understand what goes on at the hardware level. The result: Slower software, bloated software. The solution: Radical simplification!
12
15
75
@jjenkov
Jakob Jenkov
6 years
With Java 10 just released, Java is gaining momentum again... love it! #java #java10
1
15
63
@jjenkov
Jakob Jenkov
1 year
Anyone interested in a short tutorial series about Undertow? The minimalistic web server used inside JBoss Wildfly - implemented in Java ? You can create a fat-jar with Undertow and your service - from around 4-5 MB in size. Pretty good! Good performance too! #Java #Undertow
12
7
79
@jjenkov
Jakob Jenkov
1 year
My Java Functional Programming introduction - with a few fixes :-) #Java #FunctionalProgramming
6
19
75
@jjenkov
Jakob Jenkov
1 year
Doing some work with Java virtual threads within an ExecutorService. Seems reasonably easy. Updates of my Java ExecutorService + Java Virtual Thread tutorials will follow soon! #Java
6
6
74
@jjenkov
Jakob Jenkov
2 years
Anyone interested in using #Java for more graphically advanced use cases such as video players, 2D and 3D graphics, games, animation etc? Or, are you more into the already established platforms such as Unity and Unreal Engine ?
23
4
68