r/JavaProgramming • • Jun 27 '26

Is Java Finally Dead? ☠️

0 Upvotes

Every few years someone declares that Java is dead.

Meanwhile, it keeps shipping a new release every six months.

If your mental model of Java comes from ten years ago, you're looking at a very different language.

Java has steadily moved beyond its reputation for verbose syntax and enterprise-only development. Recent releases have introduced pattern matching, records, sealed classes, virtual threads, the Foreign Function & Memory API, and many other improvements. Projects like Amber, Loom, Panama, and Valhalla continue to reshape both the language and the JVM.

This wasn't always the case. Before Java 5, most evolution happened through libraries, APIs, tooling, and JVM improvements. Java 5 marked a turning point by introducing language features such as generics, annotations, enums, autoboxing, and the enhanced for loop. Since then, language evolution has become much more visible to developers.

Modern Java isn't standing still. The language keeps becoming more expressive, the runtime continues to improve, and new platform projects are expanding what Java can do.

The interesting story isn't that Java survived.

It's that Java kept evolving while people kept repeating the same headline.

If you're interested in a deeper look at how Java evolved over the years, I've written a detailed article: https://codiescoder.substack.com/p/is-java-finally-dead


r/JavaProgramming • • Aug 03 '24

Example of Java Method Overriding

Post image
0 Upvotes

r/JavaProgramming • • Apr 21 '26

How to be the best learning human in the world?

0 Upvotes

I want my brain to become the best learning machine. Throw me the best learning processes and tips, please.


r/JavaProgramming • • Jun 10 '25

How does this make sense

Post image
1 Upvotes

r/JavaProgramming • • Dec 23 '25

Day - 3 Of Learning Java

0 Upvotes

Hello World!

Today I learned how to take user input and use it for any operation. And this was really different from C Language. Here we need to write import java.util.Scanner first then in some line we will have to write another statement Scanner x = new Scanner(System.in) and then we will have to use this x function (commonly we use "scanner" instead of "x". Then we can take user input.

It's really getting exciting gradually and I'm truly excited to see what will happen in the future if I keep getting more intimate with Java 🫣...

That's it for today...

Till I write again... 👋🏼


r/JavaProgramming • • Oct 05 '25

Why String is Immutable or Final in Java? Explained

Thumbnail
javarevisited.blogspot.com
0 Upvotes

r/JavaProgramming • • Oct 01 '25

AI is taking over Java

Thumbnail
youtube.com
0 Upvotes

r/JavaProgramming • • Oct 20 '24

How to fake experience

0 Upvotes

How do you fake your experience as Java Spring Boot developer? I am trying to switch internally to a Java project since last one year, but not getting released. Learner several things on my own and built projects, but no use if I can't apply them in production. please advise how do I switch to another IT company and show that I have worked on Java for 3 years experience


r/JavaProgramming • • Sep 13 '26

Forming a small/compact group of Python beginners

Post image
0 Upvotes

r/JavaProgramming • • Jun 05 '26

LeetCode is No Longer Enough: Why 2026 Interviews Require a Different Stack

Thumbnail
reactjava.substack.com
0 Upvotes

r/JavaProgramming • • Feb 17 '25

Java Advanced Topics

1 Upvotes

If anyone is looking for a YouTube tutorial on advanced Java topics, I came across SmartProgramming. He teaches in Hindi, and the quality is top-notch, yet he’s seriously underrated. Definitely worth checking out!


r/JavaProgramming • • Feb 02 '26

Java 25 vs Go 1.25

3 Upvotes

r/JavaProgramming • • Jan 22 '26

Java in 2026: Still Verbose or Secretly Awesome?

10 Upvotes

Java in 2026 is quietly booming with Project Loom enabling easy million-concurrency via virtual threads, Spring Boot 3 + GraalVM achieving sub-second native startups, and modern syntax like records killing boilerplate yet the verbose meme still persists. Isn’t it time we recognized Java’s renaissance as the high-performance, modern backbone behind AI pipelines and cloud-native systems instead of repeating outdated stereotypes? Upvote if you're building with modern Java, and comment with the feature you love or what’s still missing.


r/JavaProgramming • • Apr 27 '25

The 2025 Java Developer RoadMap [UPDATED]

Thumbnail
javarevisited.blogspot.com
2 Upvotes

r/JavaProgramming • • Jul 14 '25

Help me learn array in java

1 Upvotes

I need to learn array to solve leetcode question I want to learn how to mapulate array


r/JavaProgramming • • Nov 02 '25

Stop Using Outdated Design Patterns — Modern Alternatives to Classic Solutions

Thumbnail
javarevisited.substack.com
0 Upvotes

r/JavaProgramming • • Oct 26 '25

Stop Using Arrays for Everything — Choose the Right Data Structure

Thumbnail
javarevisited.substack.com
1 Upvotes

r/JavaProgramming • • Feb 09 '26

What is the output order — and why?

Post image
0 Upvotes

r/JavaProgramming • • Nov 10 '24

How to make an Basic Password Manager Application Copy Below

1 Upvotes

import java.util.HashMap; import java.util.Scanner;

public class PasswordManager {

private static HashMap<String, String> passwordMap = new HashMap<>();

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    
    System.out.println("Welcome to Password Manager!");
    
    while(true) {
        System.out.println("1. Add password");
        System.out.println("2. Retrieve password");
        System.out.println("3. Exit");
        System.out.print("Enter your choice: ");
        int choice = scanner.nextInt();
        
        switch(choice) {
            case 1:
                addPassword(scanner);
                break;
            case 2:
                retrievePassword(scanner);
                break;
            case 3:
                System.out.println("Exiting Password Manager...");
                System.exit(0);
            default:
                System.out.println("Invalid choice. Please try again.");
        }
    }
}

private static void addPassword(Scanner scanner) {
    System.out.print("Enter account name: ");
    String account = scanner.next();
    System.out.print("Enter password: ");
    String password = scanner.next();
    
    passwordMap.put(account, password);
    
    System.out.println("Password added successfully!");
}

private static void retrievePassword(Scanner scanner) {
    System.out.print("Enter account name: ");
    String account = scanner.next();
    
    if(passwordMap.containsKey(account)) {
        String password = passwordMap.get(account);
        System.out.println("Password for " + account + ": " + password);
    } else {
        System.out.println("Account not found in password manager.");
    }
}

}


r/JavaProgramming • • Feb 25 '26

Get paid to build games - UK devs, modders, and creators wanted!

0 Upvotes

Want a real job making real games? Realityjam's Industry Access Program hands UK game devs and creators a guaranteed role as a junior programmer or game artist, fused with an intensive training program engineered to launch their careers for real. NO EXPERIENCE NEEDED.

The journey starts with the 12-month Scion Foundation Training Program (3 days/week), built in cooperation with Unity. From day one, Scions aren't in a classroom; they're working on live, in-production MMO titles.

Complete the Scion program, and you rank up. Graduates become Adepti and enter the Adeptus Graduate Apprenticeship Program: a paid, 4-day/week role on MMO titles as either a Junior Tech Artist or Junior Developer. Adepti squad up in five-player teams called Guilds, building and coding complete game levels using Agile methodology, where what you create matters more than how long you sit at your desk.

Compensation: £16,000 base, with bonuses pushing annual earnings up to £22,000.

Grind through the AAP, and you hit Magus rank, unlocking a £1.5M VC fund to develop and launch your own games. Each Guild can claim up to £80,000 in milestone-based funding plus free platform resources, backed by Realityjam's full commercial and technical support network.

Currently available to UK citizens aged 15 and older, with the US and Japan coming soon. Ditch the 9-5. This is where you come alive. Google Realityjam's Industry Access Program to find out more.


r/JavaProgramming • • Jun 02 '26

17 Skills Java Developers Should Learn in 2026 to Stay Relevant

Thumbnail
javarevisited.substack.com
1 Upvotes

r/JavaProgramming • • Aug 11 '26

Why is java so fucking hard for no reason?

8 Upvotes

Uni kind of loves java, using it as the default language in every module, except modules specifically around a language.

Currently struggling building a compiler with it... focus is more on working around java and the forced oop, managing state and getting fucked by gradle.

Have tests, that refuse to exit, can't be killed by the user, as they fork infinite and need to be killed with root, then the entire tooling falls apart and needs fixing.

Also for base functions you need to transform lists to streams and back to lists. Logic gets lost in boilerplate and overly verbose code.

I normally use languages like c and haskell, everyone always tells you, that they are much harder, than java, but can't agree at all

Is java supposed to be such a cluster fuck or am I missing something?

Also any idea, why char to char comparison sometimes fails, but char to hex works always?

Is this some random java thing or just my env?


r/JavaProgramming • • 24d ago

Arcana: One Pure-Java Library for (Almost) Every Archive Format

Thumbnail
ibb.co
0 Upvotes

Arcana is an open-source Java library and command-line tool that lists, extracts and identifies more than 40 archive, compression and disk image formats, with no native code and no dependencies. It runs on Java 8 or later, fits in a 1.2 MB JAR, and is published on Maven Central as io.github.realburst:arcana under the Apache 2.0 licence.

Why another archive library?

If you have ever had to open "whatever the user uploads" from a Java application, you know the drill. ZIP is in the JDK. Apache Commons Compress covers TAR, 7z, CPIO, AR and the common compressors, but some codecs need extra libraries, and Zstandard goes through a JNI binding. RAR needs another library, and RAR 5 support is hard to find in pure Java. For CAB, MSI, ISO, WIM or an installer .exe, the usual answer is to bundle 7-Zip through native bindings, with one binary per OS and CPU.

I wanted one JAR that does all of this, on any JVM, with nothing to install and nothing native to load. That is Arcana: one entry point, format detection by content rather than by file extension, and the same API whether the file is a .tar.zst, a RAR 5 volume set, an MSI package or a macOS .dmg.

What Arcana does

Arcana extracts every format it supports, and creates the most common ones.

FamilyFormatsCreate
ArchivesZIP (ZipCrypto, WinZip AES, Deflate64, Zip64), 7z, RAR 4 and RAR 5 (solid, volumes, encrypted headers), TAR, CPIO, AR / DEB, RPM, XAR, ARJ, LHAZIP, 7z, TAR, LHA
CompressorsGZIP, BZIP2, XZ, LZMA, Zstandard, LZ4, Brotli, Snappy, lzip, lzop, Unix .Z, MS SZDDGZIP, BZIP2, XZ, TAR + gz / bz2 / xz / lz4
WindowsCAB (MSZIP, LZX), MSI (real installed file tree), OLE compound files, CHM, WIM / ESD (XPRESS, LZX, LZMS), self-extracting .exeCAB
Disk imagesISO 9660 (Joliet, Rock Ridge), UDF, SquashFS, Apple DMG with HFS+-

Encrypted archives are supported: AES-256 for ZIP and 7z (reading and writing), AES-128 and AES-256 for RAR 4 and RAR 5. A TAR or CPIO inside any compressor is unpacked in one step, and files that are archives in disguise (.docx, .odt, .epub, .apk, .jar) open like any other archive.

Beyond extraction, Arcana can:

  • identify any file: archive type and version, executables (PE, ELF, Mach-O), installers, images with their dimensions, PDF, SQLite, fonts;

  • recover damaged archives: a forced extraction keeps everything readable and writes a report on the state of each file;

  • split files glued together, such as installers or firmware images;

  • load plugins for more formats. Official plugins handle Inno Setup, NSIS, InstallShield and WiX Burn installers, and UPX-packed executables.

Getting started

Add the dependency:

<dependency>
  <groupId>io.github.realburst</groupId>
  <artifactId>arcana</artifactId>
  <version>1.0.8</version>
</dependency>

Extracting and listing never require you to say what the file is: the format is detected from its content.

import be.stef.arcana.Arcana;
import be.stef.arcana.ArcanaEntry;
import be.stef.arcana.analyze.Identification;

// Extract anything: .zip, .rar, .7z, .tar.zst, .msi, .iso, .dmg...
Arcana.extractTo(new File("upload.bin"), new File("out"));

// List the entries without extracting
for (ArcanaEntry e : Arcana.listEntries(new File("backup.rar"))) {
    System.out.println(e.getName() + "  " + e.getUncompressedSize());
}

// Encrypted archive
Arcana.withPassword("secret".getBytes("UTF-8")).extract(new File("secure.7z"), new File("out"));

// What is this file?
Identification id = Arcana.identify(new File("mystery.bin"));
System.out.println(id.type + " - " + id.description);

Creating an archive is just as short:

import be.stef.arcana.ArcanaFormat;
import be.stef.arcana.compressor.ZipCompressor;
import be.stef.arcana.plugin.FormatRegistry;

byte[] password = "secret".getBytes("UTF-8");
new ZipCompressor(password).compress(new File("mydir"), new File("secure.zip"));   // WinZip AES-256
FormatRegistry.builtin(ArcanaFormat.SEVEN_Z).createCompressor(9, password).compress(new File("mydir"), new File("vault.7z"));

The same JAR is also a command-line tool:

java -jar Arcana-v1.0.8.jar x setup.exe -o out       # extract
java -jar Arcana-v1.0.8.jar l disk.dmg               # list
java -jar Arcana-v1.0.8.jar i mystery.bin            # identify
java -jar Arcana-v1.0.8.jar r damaged.zip -o rescue  # recover

On Windows, an optional script adds "Arcana Unpack / List / Info" to the Explorer right-click menu.

Safe by default

An archive extractor reads untrusted input by definition, so Arcana treats every file as hostile.

  • No path traversal. Entry names are sanitized before anything is written: no absolute paths, no .., no characters that Windows forbids. A "zip slip" entry cannot leave the destination folder.

  • No decompression bombs. Every extraction runs under limits you can change at run time (ExtractionLimits): an output/input ratio of 1000 once 1 GiB has been written, an optional total size, and a minimum of 256 MiB of free disk space.

  • Bounded memory. Decoders cap what a header can ask for: the Zstandard window is limited to 128 MiB, like the zstd tool, and the 7z key derivation to 224 rounds. A crafted header gets an error, not an OutOfMemoryError.

  • Checksums are verified. CRC32, Adler-32, BLAKE2sp, XXH64, HMAC for WinZip AES: when the format stores a checksum, Arcana checks it and reports a mismatch.

  • Plugins must show their code. A plugin JAR is refused unless it contains its source code, declares its licence and source URL, and uses its own package. That does not make a plugin safe, but it makes it reviewable.

Under the hood

Every decoder is written in Java: Deflate64, LZMA and LZMA2, PPMd, Zstandard, Brotli, LZ4, LZX, LZMS, XPRESS, LZFSE and LZVN, ADC, LZO1X, the RAR 4 and RAR 5 algorithms, AES and the key derivations. The core is about 80,000 lines of Java 8 and has no dependency outside the JDK. It is written from the public specifications: PKWARE APPNOTE, the 7-Zip format notes, the Microsoft open specifications (MS-CAB, LZX, MS-XCA), RFC 8878 for Zstandard, RFC 7932 for Brotli, Apple TN1150 for HFS+.

A few design choices shape the library:

  • Detection by content. Magic numbers first, then trailers (a DMG is recognized by the "koly" block in its last 512 bytes), and only then the file extension. A renamed file still opens.

  • Streaming when the format allows it. Single-stream formats decode from an InputStream with bounded buffers. The Zstandard decoder keeps only the window of the current frame, so a multi-gigabyte .tar.zst decodes in a few dozen MB of heap.

  • Random access when the format needs it. Disk images are read lazily: a DMG partition is decoded chunk by chunk with a small cache, never inflated in memory.

  • Real names, not internal keys. An MSI is extracted as the file tree it installs, with the names from its File and Directory tables, not as a cabinet of cryptic keys.

Each release goes through a regression suite. About 180 small samples are committed with the code: one per format and method, plus damaged files that must fail cleanly, never hang. A separate corpus of real-world files (installers, DMG images from GitHub releases, MSI packages) is checked against committed SHA-256 references. Every format also has a technical page in the repository, covering detection, layout, supported methods, limits and the sources used.

Current limits

Arcana is a young project, and the repository keeps a public list of known issues for every format. Before you rely on it, the main limits are:

  • Extraction first. Writing is limited to ZIP, 7z, TAR (+ gz, bz2, xz, lz4), GZIP, BZIP2, XZ, LHA and CAB. Arcana cannot create RAR, Zstandard or Brotli files, and it cannot update an existing archive in place.

  • Some file systems are only copied. APFS volumes inside a DMG are extracted as a raw image, not as files. Encrypted and sparse DMG images, split WIM files (.swm) and some rare compression methods (old LHA methods, Quantum in CAB) are not supported.

  • Pure Java has a cost. The decoders are fast enough for most uses, but they do not match native code. In benchmarks run for the project, the Zstandard decoder reaches about 60% of the speed of the native zstd library.

  • Edge cases remain. A few damaged or unusual files still give a raw Java exception instead of a clear message, or are less tolerated than by the reference tool. These cases are documented with the file and line of the code concerned, so you can judge before using a format in production.

If a file fails, an issue with the command line and, when possible, the file or a way to rebuild it, is the fastest route to a fix.

Try it

The quickest test is to point Arcana at the strangest file in your Downloads folder and run arcana i on it, then arcana x. If you maintain a Java application that receives archives from users, try replacing a native binding or a chain of libraries with one dependency, and tell me what breaks.

Issues, sample files that fail, and plugins are all welcome. And if Arcana saves you a dependency or a native binary, a star on GitHub helps other Java developers find it.


r/JavaProgramming • • Jun 03 '25

this javascript shit easy

0 Upvotes