« Back to the newsletter

Date Newsletter
Apr 18, 2024 ☕ Issue 413 - Java 23: The New Features Are Officially Announced
Apr 11, 2024 ☕ Issue 412 - Why Spring Matters to Jakarta EE - and Vice Versa
Apr 04, 2024 ☕ Issue 411 - Nonsensical Maven is still a Gradle problem
Mar 28, 2024 ☕ Issue 410 - Eclipse IDE 2024-03 released!
Mar 21, 2024 ☕ Issue 409 - Java 22 / JDK 22: General Availability
Mar 14, 2024 ☕ Issue 408 - "Java is here to stay": Popular programming language to remain on business hit lists in 2024
Mar 07, 2024 ☕ Issue 407 - So is Temurin is the de-facto standard JDK?
Feb 29, 2024 ☕ Issue 406 - How Netflix Really Uses Java
Feb 22, 2024 ☕ Issue 405 - JEP 465: String Templates
Feb 15, 2024 ☕ Issue 404 - EA builds that avoid lock pinning with virtual threads
Feb 08, 2024 ☕ Issue 403 - SpringBoot vs Quarkus vs Micronaut
Feb 01, 2024 ☕ Issue 402 - CodeBrew: Java IDE for iPad (Update)
Jan 25, 2024 ☕ Issue 401 - Derived Record Creation (Draft JEP)
Jan 18, 2024 ☕ Issue 400 - Check out my new App CodeBrew - A Java IDE for iPad
Jan 11, 2024 ☕ Issue 399 - Java Virtual Threads – A Definite Advantage
Jan 04, 2024 ☕ Issue 398 - Benchmark JDBC connectors and Java 21 virtual threads | MariaDB
Dec 28, 2023 ☕ Issue 397 - Migrating from Java 8/11 to Java 21, and Spring Boot 2 to the latest Spring Boot 3.2
Dec 21, 2023 ☕ Issue 396 - Securing the Fundamentals: Our Support for Log4j
Dec 14, 2023 ☕ Issue 395 - Effect cases in switch -- Brian Goetz
Dec 07, 2023 ☕ Issue 394 - Stop "Springifying" your unit tests
Nov 30, 2023 ☕ Issue 393 - Java 17 will be the minimum version for Quarkus 3.7
Nov 23, 2023 ☕ Issue 392 - Spring Framework 6.1 goes GA
Nov 16, 2023 ☕ Issue 391 - Avoid mocking the ObjectMapper!
Nov 09, 2023 ☕ Issue 390 - Play Framework is reborn like a phoenix from the ashes.... and gets rid of Akka
Nov 02, 2023 ☕ Issue 389 - JEP 461: Stream Gatherers (Preview)
Oct 26, 2023 ☕ Issue 388 - Brian Goetz Answers Your Java Questions
Oct 19, 2023 ☕ Issue 387 - Runtime efficiency with Spring (today and tomorrow)
Oct 12, 2023 ☕ Issue 386 - JEP draft: Null-Restricted Value Class Types (Preview)
Oct 05, 2023 ☕ Issue 385 - JEP: String Templates (Final) for Java 22
Sep 28, 2023 ☕ Issue 384 - A categorized list of all Java and JVM features since JDK 8, updated to Java 21
Sep 21, 2023 ☕ Issue 383 - IBM taps AI to translate COBOL code to Java | TechCrunch
Sep 14, 2023 ☕ Issue 382 - Made a Manga Translator with JavaFX
Sep 07, 2023 ☕ Issue 381 - Spring Data Relational: Introducing Single Query Loading
Aug 31, 2023 ☕ Issue 380 - Upgrading from Java 17 to 21 #RoadTo21
Aug 24, 2023 ☕ Issue 379 - JEP draft: Prepare to Restrict The Use of JNI (Updated)
Aug 17, 2023 ☕ Issue 378 - Better Java Compiler Error Messages
Aug 10, 2023 ☕ Issue 377 - My final take on Gradle (vs. Maven)
Aug 03, 2023 ☕ Issue 376 - JEP draft: Computed Constants
Jul 27, 2023 ☕ Issue 375 - JetBrains adding AI features to IntelliJ
Jul 20, 2023 ☕ Issue 374 - Quarkus: on the Road to CDI Compatibility
Jul 13, 2023 ☕ Issue 373 - Breaking java.lang.string
Jul 06, 2023 ☕ Issue 372 - Project Valhalla vs. ray tracer: will it go faster?
Jun 29, 2023 ☕ Issue 371 - Gatherers
Jun 22, 2023 ☕ Issue 370 - A New GraalVM Release and New Free License!
Jun 15, 2023 ☕ Issue 369 - JDK 21 Build 26 is Feature Complete!
Jun 08, 2023 ☕ Issue 368 - Introduction and pitfalls of Java's new concurrency
Jun 01, 2023 ☕ Issue 367 - Spring Boot Development Mode with Testcontainers and Docker
May 25, 2023 ☕ Issue 366 - OpenJDK Proposal: Ergonomics Profiles
May 18, 2023 ☕ Issue 365 - JEP 449: Deprecate the Windows 32-bit x86 Port for Removal
May 11, 2023 ☕ Issue 364 - JEP 441: Pattern Matching for switch. Formally Proposed to Target JDK 21
May 04, 2023 ☕ Issue 363 - What Is the State of the Java Ecosystem in 2023?
Apr 27, 2023 ☕ Issue 362 - Spring Boot 3.1 RC1 is here - with support for Testcontainers and docker compose
Apr 20, 2023 ☕ Issue 361 - JEP 447: Statements before super()
Apr 13, 2023 ☕ Issue 360 - Virtual Thread has been proposed to target
Apr 06, 2023 ☕ Issue 359 - Apache Empire-Db: Full SQL Freedom for Java
Mar 30, 2023 ☕ Issue 358 - New candidate JEP: 444: Virtual Threads
Mar 23, 2023 ☕ Issue 357 - Java 20 / JDK 20: General Availability
Mar 16, 2023 ☕ Issue 356 - JEP draft 8303683: Virtual Threads
Mar 09, 2023 ☕ Issue 355 - JEP 431: Sequenced Collections Proposed to Target Java 21
Mar 02, 2023 ☕ Issue 354 - What Happened To search.maven.org? - The Central Repository Documentation
Feb 23, 2023 ☕ Issue 353 - Write Efficient Bug-free and Simple Comparators in Java - JEP Café episode 17
Feb 16, 2023 ☕ Issue 352 - JEP draft: Implicit Classes and Enhanced Main Methods
Feb 09, 2023 ☕ Issue 351 - Advanced IntelliJ debugger features you’re missing out on
Feb 02, 2023 ☕ Issue 350 - Useful & Unknown Java Libraries - Piotr's TechBlog
Jan 26, 2023 ☕ Issue 349 - JEP draft: No longer require super() and this() to appear first in a constructor
Jan 19, 2023 ☕ Issue 348 - Building a PostgreSQL Wire Protocol Server using Vanilla, Modern Java 21 (shows use of: Records, Sealed Types, Pattern Matching for Switch, Virtual Threads, and Panama FFM)
Jan 12, 2023 ☕ Issue 347 - Everything you might have missed in Java in 2022
Jan 05, 2023 ☕ Issue 346 - My attempt to understand why people perceive Java as complex
Dec 29, 2022 ☕ Issue 345 - 7 Awesome Libraries for Java Unit & Integration Testing
Dec 22, 2022 ☕ Issue 344 - Don't let your persistence layer bleed into your presentation layer
Dec 15, 2022 ☕ Issue 343 - Java Usage Keeps Climbing, According to New Survey
Dec 08, 2022 ☕ Issue 342 - Java Value Objects in Action with Valhalla - JEP Café #15
Dec 01, 2022 ☕ Issue 341 - Spring Boot 3.0 is GA!
Nov 24, 2022 ☕ Issue 340 - Retrofitting null-safety onto Java at Meta
Nov 17, 2022 ☕ Issue 339 - The Spring Data JPA findById Anti-Pattern
Nov 10, 2022 ☕ Issue 338 - Understanding Java's Project Loom
Nov 03, 2022 ☕ Issue 337 - Modern JVM Multithreading • Paweł Jurczenko • Devoxx Poland 2021
Oct 27, 2022 ☕ Issue 336 - Spring Boot 3.0 RC1 available now
Oct 20, 2022 ☕ Issue 335 - Dear JetBrains. Don't mess with your UI.
Oct 13, 2022 ☕ Issue 334 - JetBrains Fleet - Public Preview
Oct 06, 2022 ☕ Issue 333 - Just a reminder: Swing is vividly alive and actively developed
Sep 29, 2022 ☕ Issue 332 - Virtual Threads: New Foundations for High-Scale Java Applications - Brian Goetz
Sep 22, 2022 ☕ Issue 331 - Java 19 / JDK 19: General Availability
Sep 15, 2022 ☕ Issue 330 - Please welcome Helidon Nima
Sep 08, 2022 ☕ Issue 329 - Panama: Not-so-Foreign Memory. Using MemorySegment as a high-performance ByteBuffer replacement without a 2GB limit.
Sep 01, 2022 ☕ Issue 328 - Java 8 to 18: Most important changes in the Java Platform
Aug 25, 2022 ☕ Issue 327 - Red Hat starts officially supporting Adoptium OpenJDK builds
Aug 18, 2022 ☕ Issue 326 - Detailed book review of the updated Head First Java
Aug 11, 2022 ☕ Issue 325 - Choose the right Java runtime for the job (2020, Quarkus vs Open Liberty vs traditional application server)
Aug 04, 2022 ☕ Issue 324 - Bright future to Java devs ahead 🚀
Jul 28, 2022 ☕ Issue 323 - Why you should favor composition over inheritance in Java (Joshua Bloch)
Jul 21, 2022 ☕ Issue 322 - Java News Roundup: Microsoft Joins MicroProfile and Jakarta EE, GlassFish, Payara, Micronaut
Jul 14, 2022 ☕ Issue 321 - Java Annotated Monthly – July 2022
Jul 07, 2022 ☕ Issue 320 - Launching 10 millions virtual threads with Loom - JEP Café #12
Jun 30, 2022 ☕ Issue 319 - OpenRewrite - Major migrations made easy
Jun 23, 2022 ☕ Issue 318 - Data Oriented Programming in Java
Jun 16, 2022 ☕ Issue 317 - SIMD accelerated sorting in Java - how it works and why it was 3x faster
Jun 09, 2022 ☕ Issue 316 - Loom and Thread Fairness
Jun 02, 2022 ☕ Issue 315 - Standardizing Native Java
May 26, 2022 ☕ Issue 314 - IntelliJ will soon look like Visual Studio Code
May 19, 2022 ☕ Issue 313 - New candidate JEP: 428: Structured Concurrency (Incubator)
May 12, 2022 ☕ Issue 312 - Setting the JDBC Statement.setFetchSize() to 1 for Single Row Queries
May 05, 2022 ☕ Issue 311 - 3 Reasons Why All Java Developers Should Consider Quarkus
Apr 28, 2022 ☕ Issue 310 - A categorized list of all Java and JVM features since JDK 8 to 18
Apr 21, 2022 ☕ Issue 309 - Java 15 introduced a cryptographic vulnerability
Apr 14, 2022 ☕ Issue 308 - 1,000,000 Concurrent Connections
Apr 07, 2022 ☕ Issue 307 - JEP 425: Virtual Threads (Preview)
Mar 31, 2022 ☕ Issue 306 - Introduction to Web Scraping With Java
Mar 24, 2022 ☕ Issue 305 - Yorm: a simple Orm based on Java Records
Mar 17, 2022 ☕ Issue 304 - JetBrains’ Statement on Ukraine
Mar 10, 2022 ☕ Issue 303 - Apache NetBeans 13 released
Mar 03, 2022 ☕ Issue 302 - Interview with Senior Java Developer
Feb 24, 2022 ☕ Issue 301 - Java lambdas vs anonymous classes
Feb 17, 2022 ☕ Issue 300 - Hidden gems in Java 16 and Java 17, from Stream.mapMulti to HexFormat
Feb 10, 2022 ☕ Issue 299 - Concurrency in modern programming languages: Rust vs Go vs Java vs Node.js vs Deno vs .NET 6
Feb 03, 2022 ☕ Issue 298 - Refactoring Java 8 code with Java 17 features - JEP Café #9
Jan 27, 2022 ☕ Issue 297 - Choosing the right backend framework is an art
Jan 20, 2022 ☕ Issue 296 - Replacing Logging APIs with java.lang.System.Logger
Jan 13, 2022 ☕ Issue 295 - 10 Frameworks Software Developers can learn in 2022
Jan 06, 2022 ☕ Issue 294 - Useful & Unknown Java Features - Piotr's TechBlog
Dec 30, 2021 ☕ Issue 293 - Java News Roundup: More Log4Shell Statements, Spring and Quarkus Updates, New Value Objects JEP
Dec 23, 2021 ☕ Issue 292 - From Maven 3 to Maven 5
Dec 16, 2021 ☕ Issue 291 - RCE 0-day exploit found in log4j, a popular Java logging package
Dec 09, 2021 ☕ Issue 290 - Package by feature, not by layer
Dec 02, 2021 ☕ Issue 289 - In Defense of Clean Code: 100+ pieces of timeless advice from Uncle Bob
Nov 25, 2021 ☕ Issue 288 - GC progress from JDK 8 to JDK 17
Nov 18, 2021 ☕ Issue 287 - [Loom] JEP draft: Virtual Threads (Preview)
Nov 11, 2021 ☕ Issue 286 - Microsoft joins the Java Community Process (JCP)
Nov 04, 2021 ☕ Issue 285 - String.format() is 3x faster in Java 17
Oct 28, 2021 ☕ Issue 284 - Is Rust going to Replace Java?
Oct 21, 2021 ☕ Issue 283 - JEP draft: Templated Strings and Template Policies (Preview)
Oct 14, 2021 ☕ Issue 282 - Oracle Proposes Shorter Java LTS Cycle of Two Years
Oct 07, 2021 ☕ Issue 281 - Faster Maven builds
Sep 30, 2021 ☕ Issue 280 - Big problems at the timezone database
Sep 23, 2021 ☕ Issue 279 - Oracle JDK now is free
Sep 16, 2021 ☕ Issue 278 - Introducing the Free Java License
Sep 09, 2021 ☕ Issue 277 - A Java 17 and Jakarta EE 9 baseline for Spring Framework 6
Sep 02, 2021 ☕ Issue 276 - It’s time to move your applications to Java 17. Here’s why. And here’s how.
Aug 26, 2021 ☕ Issue 275 - Automated migration from Java 8 to 11
Aug 19, 2021 ☕ Issue 274 - 3D Sorting Algorithms - Visualized with Java (Processing)!
Aug 12, 2021 ☕ Issue 273 - What are they building—and why? 6 questions for the top Java architects
Aug 05, 2021 ☕ Issue 272 - Brian Goetz: "I think Project Loom is going to kill Reactive Programming"
Jul 29, 2021 ☕ Issue 271 - Is Java 17 a Glass Half Full?
Jul 22, 2021 ☕ Issue 270 - JavaFX: One Codebase for Web, PC, and Mobile
Jul 15, 2021 ☕ Issue 269 - Exploring Joshua Bloch’s Builder design pattern in Java
Jul 08, 2021 ☕ Issue 268 - Hello, Spring GraphQL
Jul 01, 2021 ☕ Issue 267 - Big(O) Notation summarized!
Jun 24, 2021 ☕ Issue 266 - JVM Ecosystem Report 2021
Jun 17, 2021 ☕ Issue 265 - The Impossible Java 11
Jun 10, 2021 ☕ Issue 264 - Eclipse 4.20 - Again a massive amount of new cleanups
Jun 03, 2021 ☕ Issue 263 - Java 16 is out and you’re stuck with Java6 ? here is what you’re missing out
May 27, 2021 ☕ Issue 262 - 20 years of Hibernate
May 20, 2021 ☕ Issue 261 - A Simple Roadmap for Java Beginners in 2021
May 13, 2021 ☕ Issue 260 - Why Java's Records Are Better* Than Lombok's @Data and Kotlin's Data Classes
May 06, 2021 ☕ Issue 259 - Even more greatness packed into Java 16, including tools for improving future JVMs
Apr 29, 2021 ☕ Issue 258 - JetBrains drops 32-bit support starting with IntelliJ 2021.2
Apr 22, 2021 ☕ Issue 257 - Java is criminally underhyped
Apr 15, 2021 ☕ Issue 256 - IBM joins Eclipse Adoptium and offers free certified JDKs with Eclipse OpenJ9
Apr 08, 2021 ☕ Issue 255 - Announcing Preview of Microsoft Build of OpenJDK
Apr 01, 2021 ☕ Issue 254 - A categorized list of all Java and JVM features since JDK 8 to 16
Mar 25, 2021 ☕ Issue 253 - OOP Principles For Dummies
Mar 18, 2021 ☕ Issue 252 - Announcing Spring Native Beta
Mar 11, 2021 ☕ Issue 251 - Control a Java application with offline voice commands - source code in comments!
Mar 04, 2021 ☕ Issue 250 - Welcome 20% less memory usage for G1 remembered sets - Prune collection set candidates early
Feb 25, 2021 ☕ Issue 249 - Java Generics Explained
Feb 18, 2021 ☕ Issue 248 - Algorithms Every Programmer Should Know
Feb 11, 2021 ☕ Issue 247 - Why Namespacing Matters in Public Open Source Repositories
Feb 04, 2021 ☕ Issue 246 - Red Hat ported OpenJDK to 64-bit ARM: A community history
Jan 28, 2021 ☕ Issue 245 - Interview with Brian Goetz, Java Language Architect
Jan 21, 2021 ☕ Issue 244 - JEP draft: Primitive Objects (Preview)
Jan 14, 2021 ☕ Issue 243 - Spring Boot Tips, Tricks and Techniques - Piotr's TechBlog
Jan 07, 2021 ☕ Issue 242 - Jetbrains backdoor implicated in Huge U.S. Hack
Dec 31, 2020 ☕ Issue 241 - Do Loom’s Claims Stack Up? Part 1: Millions of Threads?
Dec 24, 2020 ☕ Issue 240 - Towards Continuous Performance Regression Testing with JfrUnit and JDK Flight Recorder
Dec 17, 2020 ☕ Issue 239 - Project Skara: migrating OpenJDK to Git & GitHub - GitHub Universe 2020
Dec 10, 2020 ☕ Issue 238 - Towards OpenJDK 17
Dec 03, 2020 ☕ Issue 237 - What's New in Maven 4 · Maarten on IT
Nov 26, 2020 ☕ Issue 236 - Software Architecture
Nov 19, 2020 ☕ Issue 235 - New language features since Java 8 to 15
Nov 12, 2020 ☕ Issue 234 - Best Java Books for Beginners
Nov 05, 2020 ☕ Issue 233 - A better way to understand your Java applications
Oct 29, 2020 ☕ Issue 232 - Why we chose Java for our High-Frequency Trading application
Oct 22, 2020 ☕ Issue 231 - What is JavaFX and why do we need it?
Oct 15, 2020 ☕ Issue 230 - 9 High-Performance Tips when using MySQL and Java
Oct 08, 2020 ☕ Issue 229 - Lambda Expressions, how do they work?
Oct 01, 2020 ☕ Issue 228 - GitHub Welcomes the OpenJDK Project!
Sep 24, 2020 ☕ Issue 227 - A Picture of Java in 2020
Sep 17, 2020 ☕ Issue 226 - JDK 15 GA Release
Sep 10, 2020 ☕ Issue 225 - Read a paper: Design of the Java Virtual Machine Instruction Set
Sep 03, 2020 ☕ Issue 224 - try { return } finally {}
Aug 27, 2020 ☕ Issue 223 - The Java Version Almanac: Collection of information about the history and future of Java
Aug 20, 2020 ☕ Issue 222 - Chess GUI using JavaFX
Aug 13, 2020 ☕ Issue 221 - The jdk/jdk repository transition date to Git/GitHub is now set: Sept. 5!
Aug 06, 2020 ☕ Issue 220 - Micro optimizations in Java. String.equals()
Jul 30, 2020 ☕ Issue 219 - OpenJDK Migrates to Github
Jul 23, 2020 ☕ Issue 218 - Is there any need to switch to modules when migrating past Java 8? No!
Jul 16, 2020 ☕ Issue 217 - Master Programming with Best Underrated Youtube Channels
Jul 09, 2020 ☕ Issue 216 - Lombok & Hibernate: How to Avoid Common Pitfalls
Jul 02, 2020 ☕ Issue 215 - Master Programming with best YouTube Channels
Jun 25, 2020 ☕ Issue 214 - How I chose a programming language and beat bad habits
Jun 18, 2020 ☕ Issue 213 - JDK 15: The new features in Java 15
Jun 11, 2020 ☕ Issue 212 - The 25 greatest Java apps ever written
Jun 04, 2020 ☕ Issue 211 - GitHub warns Java developers of new malware poisoning NetBeans projects | ZDNet
May 28, 2020 ☕ Issue 210 - Java's 25th Birthday Kickoff Event
May 21, 2020 ☕ Issue 209 - Java programming language celebrates 25 years
May 14, 2020 ☕ Issue 208 - Top Data Structures and Algorithms every developer must know
May 07, 2020 ☕ Issue 207 - What is JDBC?
Apr 30, 2020 ☕ Issue 206 - I started a blog about programming (with a focus on the JVM) in the form of a Git repository hosted on Gitlab.
Apr 23, 2020 ☕ Issue 205 - Google vs Oracle copyright claim mistakes the medium for the message
Apr 16, 2020 ☕ Issue 204 - Java Objects Inside Out: Everything You Ever Wanted to Know About Java Object Internals in Hotspot
Apr 09, 2020 ☕ Issue 203 - Spring Security: Authentication and Authorization In-Depth
Apr 02, 2020 ☕ Issue 202 - I am a big fan of Java, and I thought this was really funny!
Mar 26, 2020 ☕ Issue 201 - A categorized list of all Java and JVM features since JDK 8 to 14
Mar 19, 2020 ☕ Issue 200 - Java 14 is out!
Mar 12, 2020 ☕ Issue 199 - Busy Developers’ Guide to Java 9, 10, 11, 12, 13, and Above
Mar 05, 2020 ☕ Issue 198 - Java Magazine: Java 14 Arrives with a Host of New Features
Feb 27, 2020 ☕ Issue 197 - JDBC drivers for all major Oracle versions (19, 18, 12, 11) are now available on Maven Central
Feb 20, 2020 ☕ Issue 196 - Transition from Java 8 to Java 11
Feb 13, 2020 ☕ Issue 195 - 36% of developers switched from Oracle JDK to an alternate OpenJDK distribution, over the last year
Feb 06, 2020 ☕ Issue 194 - Java Streams are great but it’s time for better Java Collections
Jan 30, 2020 ☕ Issue 193 - What is Spring Framework? From Dependency Injection to Web MVC
Jan 24, 2020 ☕ Issue 192 - IntelliJ-based IDE Features Roadmap for 2020 (Part 2)
Jan 17, 2020 ☕ Issue 191 - 10 Skills Java Programmer can Learn to Accelerate their Career
Jan 10, 2020 ☕ Issue 190 - 11 Essential Skills Software Developers should Learn in 2020
Jan 03, 2020 ☕ Issue 189 - Why Java will remain a dominant language of the future
Dec 27, 2019 ☕ Issue 188 - Java JIT vs Java AOT vs Go for small, short-lived processes
Dec 20, 2019 ☕ Issue 187 - Eclipse 2019-12 - Released
Dec 13, 2019 ☕ Issue 186 - The Road to Valhalla
Dec 06, 2019 ☕ Issue 185 - Tranquil Java IDE - Turbo C++ lookalike for Java
Nov 29, 2019 ☕ Issue 184 - Coding Interview Patterns for Microsoft, Facebook, Google, Amazon and Netflix
Nov 22, 2019 ☕ Issue 183 - Top 5 Concurrency Interview Questions for Software Engineers
Nov 15, 2019 ☕ Issue 182 - JEP 369: Migrate to GitHub
Nov 08, 2019 ☕ Issue 181 - 10 FREE DevOps Courses to learn Jenkins, Docker, and Maven for Programmers
Nov 01, 2019 ☕ Issue 180 - Text Blocks Come to Java
Oct 25, 2019 ☕ Issue 179 - Good Programmer vs Average Programmer - and, Why Asking questions and Paying attention to Details matters.
Oct 18, 2019 ☕ Issue 178 - What software technologies will earn you the highest pay?
Oct 11, 2019 ☕ Issue 177 - 101 Coding Problems and few Tips to Crack Your Next Programming Interviews
Oct 04, 2019 ☕ Issue 176 - Spring Framework 5.2 goes GA
Sep 27, 2019 ☕ Issue 175 - Learn the pros and cons of upgrading from Java 8
Sep 20, 2019 ☕ Issue 174 - 20+ basic Algorithms Problems from Coding Interviews
Sep 13, 2019 ☕ Issue 173 - 🔥🔥🔥Why Java is so hot right now 🔥 🔥 🔥
Sep 06, 2019 ☕ Issue 172 - Top 10 Free Books and Courses to learn Data Structure and Algorithms in 2019
Aug 30, 2019 ☕ Issue 171 - The ONE book every developer MUST read!
Aug 23, 2019 ☕ Issue 170 - Java tops the list of the most in-demand programming languages of 2019
Aug 16, 2019 ☕ Issue 169 - Top 5 Programming Languages Every Software Developer Should Learn
Aug 09, 2019 ☕ Issue 168 - 50+ Core Java Interview Questions with Answers for Programmers
Aug 02, 2019 ☕ Issue 167 - Top 10 Object-Oriented Design Principles for writing Clean Code
Jul 26, 2019 ☕ Issue 166 - 8 Coding Games to Improve and Level Up Your Programming Skills
Jul 19, 2019 ☕ Issue 165 - Top 20 Websites to Learn Coding with Java, Python, SQL, Algorithms, and Git For Free in 2019 - Best of Lot
Jul 12, 2019 ☕ Issue 164 - I made a Pokemon In a Week in Java
Jul 05, 2019 ☕ Issue 163 - Why we removed Lombok in one of our projects
Jun 28, 2019 ☕ Issue 162 - Top 10 Developer tools You Didn't Know You Needed
Jun 21, 2019 ☕ Issue 161 - Announcing the Visual Studio Code Installer for Java
Jun 14, 2019 ☕ Issue 160 - 10 Data Structure and Algorithms Articles Beginners Should Read this Weekend
Jun 07, 2019 ☕ Issue 159 - Added fences into the 2d java game I'm making! Let me know what you think :)
May 31, 2019 ☕ Issue 158 - Oracle floats Java hardware acceleration proposal
May 24, 2019 ☕ Issue 157 - First post of the Hibernate tutorials I have started writing. Feedbacks welcome 😊
May 17, 2019 ☕ Issue 156 - Announcing GraalVM 19
May 10, 2019 ☕ Issue 155 - Writing Testable Code
May 03, 2019 ☕ Issue 154 - Java's LinkedList is a performance nightmare, you should ALWAYS use ArrayList or ArrayDeque instead!
Apr 26, 2019 ☕ Issue 153 - Comparing Java alternatives to JavaScript in the browser (GWT, CheerpJ, TeaVM, JSweet, Vaadin) - benchmarked against React.js and Dart
Apr 19, 2019 ☕ Issue 152 - Leadership of OpenJDK 8 and OpenJDK 11 Transitions to Red Hat
Apr 12, 2019 ☕ Issue 151 - Introduction to Test Driven Development (TDD)
Apr 05, 2019 ☕ Issue 150 - 39 New Features (and APIs) in JDK 12
Mar 29, 2019 ☕ Issue 149 - JEP draft: Add detailed message to NullPointerException describing what is null
Mar 22, 2019 ☕ Issue 148 - Java 12 Released !!!
Mar 15, 2019 ☕ Issue 147 - Final vs Immutable data structures in Java
Mar 08, 2019 ☕ Issue 146 - "Real World Java 9" with Trisha Gee (58min talk from GOTO Amsterdam 2017)
Mar 01, 2019 ☕ Issue 145 - "Let’s Get Lazy: Exploring the Real Power of Streams" with Venkat Subramaniam (47min talk from GOTO Copenhagen 2018)
Feb 22, 2019 ☕ Issue 144 - SOLID Java
Feb 15, 2019 ☕ Issue 143 - Understanding the LMAX Disruptor
Feb 08, 2019 ☕ Issue 142 - Spring Cloud Netflix stop to develop and go into Maintenance Mode
Feb 01, 2019 ☕ Issue 141 - Did you know that the bug search tools in Java code have bugs too?
Jan 25, 2019 ☕ Issue 140 - Migrating from Lombok to Kotlin
Jan 18, 2019 ☕ Issue 139 - Java in 2019: A Look Ahead
Jan 11, 2019 ☕ Issue 138 - Netflix OSS and Spring Boot - Coming Full Circle
Jan 04, 2019 ☕ Issue 137 - NetBeans 10 Released: The Best Swing GUI Builder You Should Try | Old Young Boys Club
Dec 28, 2018 ☕ Issue 136 - Java Language Architect Brian Goetz on Java and the JDK
Dec 21, 2018 ☕ Issue 135 - Netflix OSS and Spring Boot – Coming Full Circle
Dec 14, 2018 ☕ Issue 134 - Spring Transaction Management: Finally Understandable [video]
Dec 07, 2018 ☕ Issue 133 - Why Java will stay relevant longer than Haskell or Erlang
Nov 30, 2018 ☕ Issue 132 - 9 High-Performance Tips when using PostgreSQL with JPA and Hibernate
Nov 23, 2018 ☕ Issue 131 - GitHub Octoverse: Java is most used server-side language - Kotlin most growing
Nov 16, 2018 ☕ Issue 130 - Project Loom: Fibers and Continuations for Java by Alan Bateman
Nov 09, 2018 ☕ Issue 129 - Imperative Loop or Functional Stream Pipeline? Beware of the Performance Impact!
Nov 02, 2018 ☕ Issue 128 - IBM to buy RedHat
Oct 26, 2018 ☕ Issue 127 - Eclipse 4.10 (due in 2 months) will feature full JDK 11 support
Oct 19, 2018 ☕ Issue 126 - Simple Token Auth for Java Apps
Oct 12, 2018 ☕ Issue 125 - Java 11: The Great Removal
Oct 05, 2018 ☕ Issue 124 - AdoptOpenJDK Java 11 release
Sep 28, 2018 ☕ Issue 123 - Do not fall into Oracle's Java 11 trap
Sep 21, 2018 ☕ Issue 122 - Java 11 String API Updates
Sep 14, 2018 ☕ Issue 121 - A Guide to Logging in Java
Sep 07, 2018 ☕ Issue 120 - From Java 8 to Java 11
Aug 31, 2018 ☕ Issue 119 - Java is still available at zero-cost. A guide how obtaining the JDK is changing.
Aug 24, 2018 ☕ Issue 118 - JavaFX is dead. Long live JavaFX? (from a science perceptive)
Aug 17, 2018 ☕ Issue 117 - Java Developers: var Is Your Friend
Aug 10, 2018 ☕ Issue 116 - Spring Boot – Best Practices
Aug 03, 2018 ☕ Issue 115 - 10 Excellent Ways to Secure Your Spring Boot Application
Jul 27, 2018 ☕ Issue 114 - Build a JavaFX Game: Space Invaders in 15 minutes
Jul 20, 2018 ☕ Issue 113 - Eliminating Java Update Confusion
Jul 13, 2018 ☕ Issue 112 - Shaping the Future of Java, Faster
Jul 06, 2018 ☕ Issue 111 - New Java 11 Feature: Launch Single-File Source-Code Programs
Jun 22, 2018 ☕ Issue 110 - Which Java exceptions are the most frequent: data analysis from a number of popular developer sites on the internet
Jun 15, 2018 ☕ Issue 109 - JVM Internals
Jun 08, 2018 ☕ Issue 108 - 5 Java concepts explained: Overloading, overriding, shadowing, hiding, and obscuring
Jun 01, 2018 ☕ Issue 107 - Oracle plans to dump risky Java serialization
May 25, 2018 ☕ Issue 106 - From Java to Kotlin and Back Again
May 18, 2018 ☕ Issue 105 - How to write horrible Java - some practical advice
May 11, 2018 ☕ Issue 104 - Java Mission Control open sourced
May 04, 2018 ☕ Issue 103 - New Methods on Java Strings With JDK 11
Apr 27, 2018 ☕ Issue 102 - Official Jakarta EE website is live!
Apr 20, 2018 ☕ Issue 101 - Announcing GraalVM: Run Programs Faster Anywhere
Apr 13, 2018 ☕ Issue 100 - JEP draft: Vector API
Apr 06, 2018 ☕ Issue 99 - Why I Moved Back from Gradle to Maven
Mar 30, 2018 ☕ Issue 98 - Rich Hickey (Clojure Creator) radically changed the way I think about my Java code. This talk is one of his gems.
Mar 23, 2018 ☕ Issue 97 - JDK 10 is now available for download
Mar 16, 2018 ☕ Issue 96 - Explained: Java EE, Jakarta EE, EE4J, J2EE, MicroProfile, what is what?
Mar 09, 2018 ☕ Issue 95 - Top 10 Useful, Yet Paranoid Java Programming Techniques
Mar 02, 2018 ☕ Issue 94 - IntelliJ IDEA 2018.1 Public Preview
Feb 23, 2018 ☕ Issue 93 - IBM Java CTO: Devs shouldn't have to learn Docker, K8s, 30 other things to deploy an app
Feb 16, 2018 ☕ Issue 92 - Due to Oracle being Oracle, Eclipse holds poll to rename Java EE (No, it won't be Java McJava Face)
Feb 09, 2018 ☕ Issue 91 - Java 9 has six weeks to live
Feb 02, 2018 ☕ Issue 90 - Java 9 Reactive Streams example
Jan 26, 2018 ☕ Issue 89 - JEP 325: Switch Expressions
Jan 19, 2018 ☕ Issue 88 - 10 Must Read Books for Coders of All levels
Jan 12, 2018 ☕ Issue 87 - Java Reflection is twice as slow as direct access, MethodHandle also but there's a solution
Jan 05, 2018 ☕ Issue 86 - Awesome code search for Java based on code learned from GitHub, StackOverflow, Maven
Dec 29, 2017 ☕ Issue 85 - How Memory Leaks Happen in a Java Application
Dec 22, 2017 ☕ Issue 84 - Test your REST API with Postman
Dec 15, 2017 ☕ Issue 83 - JEP draft: Switch Expressions for the Java Language
Dec 08, 2017 ☕ Issue 82 - Essentials4j - the perfect library for every Java 8 project!
Dec 01, 2017 ☕ Issue 81 - One more week left for the Humble Book Bundle: Java presented by O'Reilly
Nov 24, 2017 ☕ Issue 80 - Humble Bundle just released a Java book bundle
Nov 17, 2017 ☕ Issue 79 - Improve your JUnit tests with Mockito and PowerMock
Nov 10, 2017 ☕ Issue 78 - JDK 10 Early-Access Builds
Nov 03, 2017 ☕ Issue 77 - Thank you webjars, for releasing me from NPM hell.
Oct 27, 2017 ☕ Issue 76 - Using Java 9 Modularization to Ship Zero-Dependency Native Apps
Oct 20, 2017 ☕ Issue 75 - Top 10 Java Blogs for Programmers of All Levels
Oct 13, 2017 ☕ Issue 74 - God (Folder) Hates Java
Oct 06, 2017 ☕ Issue 73 - Fast JVM startup with JDK 9 (and JDK5)
Sep 29, 2017 ☕ Issue 72 - Spring Framework 5.0 goes GA
Sep 22, 2017 ☕ Issue 71 - Strongly Typed Languages Reduce Bugs by 15%
Sep 15, 2017 ☕ Issue 70 - JUnit 5 released!
Sep 08, 2017 ☕ Issue 69 - JavaEE is now on GitHub
Sep 01, 2017 ☕ Issue 68 - Stop Returning Null in Java
Aug 25, 2017 ☕ Issue 67 - Red Hat responds to Java EE moving to an open source foundation
Aug 18, 2017 ☕ Issue 66 - Java Still Number One, But What’s Taking Over?
Aug 11, 2017 ☕ Issue 65 - A Detailed Guide to Java 8 CompletableFuture
Aug 04, 2017 ☕ Issue 64 - Java 8 idioms: Why the perfect lambda expression is just one line
Jul 28, 2017 ☕ Issue 63 - How I once saved half a million dollars with a single character code change
Jul 21, 2017 ☕ Issue 62 - IntelliJ IDEA 2017.2 is Here: Smart, Sleek, and Snappy
Jul 14, 2017 ☕ Issue 61 - A basic Spring Boot web app in Java, Kotlin and Scala - comparison
Jul 07, 2017 ☕ Issue 60 - JetBrains elected to the JCP Executive Committee
Jun 30, 2017 ☕ Issue 59 - IntelliJ IDEA 2017.2 Public Preview
Jun 23, 2017 ☕ Issue 58 - CheerpJ, a Java bytecode to JavaScript compiler compatible with 100% of Java
Jun 16, 2017 ☕ Issue 57 - Microsoft are leaving the Minecraft you know behind
Jun 09, 2017 ☕ Issue 56 - Java is dethroned as the memory hog king by C#
Jun 02, 2017 ☕ Issue 55 - Maven is broken by design
May 26, 2017 ☕ Issue 54 - Java Creator James Gosling Joins AWS
May 19, 2017 ☕ Issue 53 - Android now supports the Kotlin programming language
May 12, 2017 ☕ Issue 52 - JSR 376 (Jigsaw) Public Review Ballot: EC has not approved
May 05, 2017 ☕ Issue 51 - IBM and Red Hat to Vote "No" on Java Modules (Jigsaw)
Apr 28, 2017 ☕ Issue 50 - Building a user management microservice (Part 1): Defining the domain model and a REST API
Apr 21, 2017 ☕ Issue 49 - JavaEE is moving to GitHub
Apr 14, 2017 ☕ Issue 48 - Top 10 Java Common Pitfalls (2013)
Apr 07, 2017 ☕ Issue 47 - Java 8 Vs. Java 9: Get Ready for a New Era
Mar 31, 2017 ☕ Issue 46 - Impossible Java
Mar 24, 2017 ☕ Issue 45 - How Project Amber Will Revolutionize Java
Mar 17, 2017 ☕ Issue 44 - Apache servers under attack through easily exploitable Struts 2 flaw
Mar 10, 2017 ☕ Issue 43 - Java regular expressions cheat sheet
Mar 03, 2017 ☕ Issue 42 - Lightning Fast Code
Feb 24, 2017 ☕ Issue 41 - Java libraries you can't miss in 2017
Feb 17, 2017 ☕ Issue 40 - Oracle vs Google: Just as you thought Java-Android row was over, it all kicks off again
Feb 10, 2017 ☕ Issue 39 - Java 9's Immutable Collections Are Easier To Create But Use With Caution
Feb 03, 2017 ☕ Issue 38 - Java Without If
Jan 27, 2017 ☕ Issue 37 - Java is Unsound: The Industry Perspective
Jan 20, 2017 ☕ Issue 36 - Java developer interview questions: The hard part
Jan 13, 2017 ☕ Issue 35 - The JVM is not that heavy
Jan 06, 2017 ☕ Issue 34 - SOLID Principles : The Definitive Guide
Dec 30, 2016 ☕ Issue 33 - Poorly Researched Clickbait Articles in DZone - StringBuilder is still needed
Dec 23, 2016 ☕ Issue 32 - Is Gartner's Report of Java EE's Demise Greatly Exaggerated?
Dec 16, 2016 ☕ Issue 31 - Gartner: "Develop a strategy to deal with the obsolescence of Java EE"
Dec 09, 2016 ☕ Issue 30 - Enhanced Enums (JEP 301)
Dec 02, 2016 ☕ Issue 29 - JDK 10, We're just getting started …
Nov 25, 2016 ☕ Issue 28 - IntelliJ IDEA 2016.3 GA: Java 8 and ES6, Debugger and UI improvements, and a Ton More
Nov 18, 2016 ☕ Issue 27 - Trampolining: a practical guide for awesome Java Developers
Nov 11, 2016 ☕ Issue 26 - Writing testable code (2008)
Nov 04, 2016 ☕ Issue 25 - var keyword proposed for Java
Oct 28, 2016 ☕ Issue 24 - Very nice presentation about lambdas and streams
Oct 21, 2016 ☕ Issue 23 - Google open sources the Java code that powers its domain registry
Oct 14, 2016 ☕ Issue 22 - The Rise and Fall of Scala
Oct 07, 2016 ☕ Issue 21 - 9 Things in JDK 9 That Aren'€™t Jigsaw
Sep 30, 2016 ☕ Issue 20 - Oracle denied new trial in copyright dispute with Google over Java
Sep 23, 2016 ☕ Issue 19 - Var comes to Java
Sep 16, 2016 ☕ Issue 18 - Super Mario Source Code in Java
Sep 09, 2016 ☕ Issue 17 - This sounds like Java 9 could get delayed further
Sep 02, 2016 ☕ Issue 16 - JUnit Cheat Sheet
Aug 26, 2016 ☕ Issue 15 - Oracle Plans to Open Source JDK 9 ARM ports
Aug 19, 2016 ☕ Issue 14 - Lessons from converting an app to 100% Kotlin
Aug 12, 2016 ☕ Issue 13 - How my open source hobby project became my job: 10 years of OptaPlanner
Aug 05, 2016 ☕ Issue 12 - Programming languages in coding interviews ranked
Jul 29, 2016 ☕ Issue 11 - Intel is introducing Multi-OS Engine for Android and iOS development using Java
Jul 22, 2016 ☕ Issue 10 - The Hitchhikers Guide to GitHub: 13 Java Projects You Should Try
Jul 15, 2016 ☕ Issue 9 - IntelliJ IDEA 2016.2 is Here!
Jul 08, 2016 ☕ Issue 8 - Eclipse Neon (v4.6) has been released
Jul 01, 2016 ☕ Issue 7 - OpenJDK now available for Windows
Jun 24, 2016 ☕ Issue 6 - Eclipse Neon (v4.6) has been released
Jun 17, 2016 ☕ Issue 5 - Gosling rallies against Oracle for Java EE neglect
Jun 10, 2016 ☕ Issue 4 - Java 9 Will Remove CORBA from Default Classpath
Jun 03, 2016 ☕ Issue 3 - Chrome extension that adds Java IDE features to code on GitHub
May 27, 2016 ☕ Issue 2 - Sun’s Jonathan Schwartz at trial: Java was free, Android had no licensing problem
May 20, 2016 ☕ Issue 1 - The H2 Database is now finally on GitHub
» Subscribe to the Awesome Java Weekly «
to know all the trending news, articles and projects