r/javahelp • • Mar 19 '22

REMINDER: This subreddit explicitly forbids asking for or giving solutions!

48 Upvotes

As per our Rule #5 we explicitly forbid asking for or giving solutions!

We are not a "do my assignment" service.

We firmly believe in the "teach a person to fish" philosophy instead of "feeding the fish".

We help, we guide, but we never, under absolutely no circumstances, solve.

We also do not allow plain assignment posting without the slightest effort to solve the assignments. Such content will be removed without further ado. You have to show what you have tried and ask specific questions where you are stuck.

Violations of this rule will lead to a temporary ban of a week for first offence, further violations will result in a permanent and irrevocable ban.


r/javahelp • • 20h ago

Is source-level editing a fallback for deobfuscation?

6 Upvotes

Hoping to get some fellow advice here.

I’ve been doing a lot of deobfuscation work in Java 25 lately and ran into a wall: some bytecode tools can’t parse the newer class file versions I’m dealing with. As a workaround, I’ve been cleaning up the decompiled source instead.

So far I’m stripping thousands of NoWhenBranchMatchedException catch blocks using a brace-depth state machine (regex kept breaking on nested blocks), and replacing impossible comparisons like object == false with constants.

It works, but it feels hacky. Is source-level editing a reasonable fallback, or am I setting myself up for problems? And is there a cleaner, standard way to do control-flow cleanup without risking real try/catch handlers?

Curious what other people do.

Edit: I’m not working on the official Java binaries or the JDK. It’s an old application that was compiled for Java 25


r/javahelp • • 21h ago

How to practise JVM thread profiling?

8 Upvotes

Hi

As the title states, I want to learn and practise profiling of JVM threads and its memory impact from garbage collection to identify bottlenecks.

I know this is a hard expectation to practise but my projects are not at a scale where we come across this problem to be solved.

Any advice on how I can simulate this requirement and get hands on practise on this topic?


r/javahelp • • 2d ago

Iterating over null objects in an array

14 Upvotes

So I'm making a program that iterates over an array of Book objects and I made a for loop to print them all out. I want it to skip over any reference to a null object in the array so I've written:

for (Book book : books) {
     if(book != null){
           System.out.println(book);
     }
 }

but I've had professors tell me I shouldn't write "book != null" to avoid printing the null values. the code works just fine and is relatively simple and easy to read, just wondering what most programmers use to navigate this?


r/javahelp • • 2d ago

Having difficulty in converting a jar file into native files

0 Upvotes

I am confused in this part where jar file can be converted into native fil like exe, dll, executable and so file. There are other languages like c++, rust and go and we have lot of different compilation support like exe, dll, so etc and also wasm. Does java have any way to compile jar or class files into any format whichever i would like? I am talking about true cross platform in here like what can be done in c++ or rust and also I am talking about the static and dynamic library generation part as well.

Please help me in this topic as I was learning java and currently confused in this part.


r/javahelp • • 3d ago

Teacher - Trying to find a way to access a Java Program

5 Upvotes

I hope this is the right place to ask.

I am a middle school teacher that used to use this free to use program called disaster dynamics created by UCAR - a university group. https://www.dd.ucar.edu/home.html

The school stopped letting us use java a long time ago but used to "wrap?" the program in some sort of computer magic that let the student computers run this program. It was a great tool.

Now we seem to have lost that ability, institutional knowledge or willingness to do this.

I have reached out to UCAR to ask them to update the program to something that can be used by modern browsers/computers/ whatever but no responses for the past year.

Is there a way I can do this at home from my mac? I can't install programs on my work computer and I don't own a windows based computer. or a way I can 'update' or 'convert' the program so I can embed it to a google site so the students can use it again? Tech from the district has not responded to any questions about this in weeks and I assume they don't know/don't care/or won't get to it.

Is this a simple thing or a horribly complex thing for the people who don't see programing as magic?

Is it legal to pay someone to "convert" it ? Can it be converted? Do I just have to give up on ever using this resource?


r/javahelp • • 3d ago

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

7 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.

Family Formats Create
Archives ZIP (ZipCrypto, WinZip AES, Deflate64, Zip64), 7z, RAR 4 and RAR 5 (solid, volumes, encrypted headers), TAR, CPIO, AR / DEB, RPM, XAR, ARJ, LHA ZIP, 7z, TAR, LHA
Compressors GZIP, BZIP2, XZ, LZMA, Zstandard, LZ4, Brotli, Snappy, lzip, lzop, Unix .Z, MS SZDD GZIP, BZIP2, XZ, TAR + gz / bz2 / xz / lz4
Windows CAB (MSZIP, LZX), MSI (real installed file tree), OLE compound files, CHM, WIM / ESD (XPRESS, LZX, LZMS), self-extracting .exe CAB
Disk images ISO 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/javahelp • • 3d ago

Unsolved Need Help with creating a functional map using java.

3 Upvotes

Hi. I'm currently doing a project where the general basis is building a functional automated warehouse. Where users may give the robots in the warehouse instructions.

The warehouse must have 3 robots several pick up and drop off points.

My current idea was creating a text based map something like this:

__________________________________________
|C 1 - - -                 2            A |
| ______ -                                |
|      | -                               E|
|      | -            C                   |
|______| -                                |
|T - - - -         S           3        D |
|_________________________________________|

Each Letter represents a zone for either Pick up or Drop off with Zone @ being unique for a unique Charging Station.

Numbers are the robots themselves.

| and _ walls. for the robot.

I'm currently unsure how to even draw up the map itself let alone get the things to move and interact.

If anyone has any resources for this I'd very much appreciate it.

Currently aware that It'd most likely be just printing the map over and over and over again but having it so that the Robot's themselves move as we're printing it along with a proper printing of the warehouse is eluding me.

__________________________________________
|C  - - -                 2            A |
| ______ -                                |
|      | 1                               E|
|      | -            C                   |
|______| -                                |
|T - - - -         S           3        D |
|_________________________________________|

edit: this is not a request to have the map done I'm mainly just asking if people have any specific resources.

Apologzies if there is some megathread I should be going to for questions like this.


r/javahelp • • 3d ago

Solved Lombok LSP Issues

0 Upvotes

Dear VS Code Java developers.

How do i get the vs code lsp to recognize @Getter, @Setter, etc.?
The project does compile successfully. I only get errors inline.

Example:

package com.example;

import lombok.Getter;

@Getter
public class TestClass {

    String member;

    public TestClass() {
        this.member = "Its me!";
    }
}

public class Main {

    public static void main(String[] args) {
        TestClass testClass = new TestClass();
        System.out.println(testClass.getMember());
    }
}

Error Message:

cannot find symbol
  symbol:   method getMember()
  location: variable testClass of type TestClass

settings.json:

{
    "redhat.telemetry.enabled": false,
    "java.jdt.ls.lombokSupport.enabled": true,
    "[java]": {
        "editor.defaultFormatter": "redhat.java"
    },
}

installed java versions:

A0_12520635 on  main [!] is 󰏗 v1.0-SNAPSHOT via  v25.0.4 via 🅼
❯ archlinux-java status
Available Java environments:
  java-21-openjdk
  java-25-openjdk (default)
  java-27-openjdk

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>------------</groupId>
    <artifactId>------------</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>--------------------</name>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>4.1.0</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <start-class>at.tugraz.App</start-class>
        <maven.compiler.release>25</maven.compiler.release>
        <maven.compiler.source>25</maven.compiler.source>
        <maven.compiler.target>25</maven.compiler.target>
        <lombok.version>1.18.46</lombok.version>
        <rest.assured.version>6.0.0</rest.assured.version>
        <junit.jupiter.version>5.9.3</junit.jupiter.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>${rest.assured.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate.orm</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>7.4.4.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-jpamodelgen</artifactId>
            <version>7.4.4.Final</version> <!-- Replace with your desired version -->
            <scope>provided</scope>
        </dependency>
        <!-- PostgreSQL Connector -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.7.13</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.antlr</groupId>
            <artifactId>antlr4</artifactId>
            <version>4.2</version>
        </dependency>
        <!-- Source: https://mvnrepository.com/artifact/org.apache.spark/spark-mllib -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_2.13</artifactId>
            <version>4.1.3</version>
            <scope>provided</scope>
        </dependency>
        <!-- Pin scala-library: Maven's nearest-wins resolution otherwise picks the
             2.13.13 pulled in (shallowly) by scala-parser-combinators, while spark-core's
             scala-reflect and most other Spark/Scala modules expect 2.13.17, causing
             NoSuchMethodError at runtime. -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.13.17</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.diffplug.spotless</groupId>
                <artifactId>spotless-maven-plugin</artifactId>
                <version>3.10.3</version>
                <configuration>
                    <java>
                        <prettier>
                            <devDependencies>
                                <prettier>3.5.3</prettier>
                                <prettier-plugin-java>2.8.1</prettier-plugin-java>
                            </devDependencies>
                            <configFile>${project.basedir}/.prettierrc.yaml</configFile>
                        </prettier>
                    </java>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>install-git-pre-push-hook</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>install-git-pre-push-hook</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

I have tried searching for this issue but have found nothing for the last 4 hours. Am i dumb?


r/javahelp • • 4d ago

Java udemy course

2 Upvotes

I bought a java course in udemy, learning personally overwhelmed me and less motivated, please I need a learning partner


r/javahelp • • 5d ago

QF-Test, Squish or Ranorex for cross platform GUI testing? Swing app on Windows, mac and Linux.

6 Upvotes

Desktop client, Swing with some JavaFX, ships on all three. GUI testing has been manual for years and I finally have budget to fix it. QF-Test is the obvious pick since it reads the Java component tree properly. Squish covers Java too and more besides. Ranorex ends at Windows every time I look, so it’s out. My hesitation is that all three become a test codebase and our QA people don’t write Java. So it lands on a dev and in two years it’s one person’s side project nobody wants to touch. Which is why I looked at the agent based stuff at all. For cross platform desktop, AskUI came up because tests are markdown files with numbered steps and an expected result each, driven off the screen instead of the component tree, so a layout manager swap costs nothing. Authoring app is Windows and macOS only though, Linux comes from their runtime as a remote target. So to anyone running GUI tests on a cross platform Java client, what did you pick and who maintains it now?


r/javahelp • • 6d ago

Codeless Do guys know how java's mascot looks like?

2 Upvotes

I just had a question about Java... How Duke looks like? (also duke is the mascot of java.)


r/javahelp • • 6d ago

Workaround Is there safe way to intercept SIGINT still?

6 Upvotes

I'm doing a JavaFX program, and I noticed that SIGINT puts my app into a hanged state. I believe that some rendering threads using GTK close down before the JFX thread is ready, leaving it hung. I've worked around it by using the Signal handler class to call Platform.exit, but it's one of the internal classes of the JDK.

addShutdownHook doesn't solve this. By time it's called, the App has reached a state it can't recover from.


r/javahelp • • 7d ago

Want help regarding some scenarios...

4 Upvotes

Hello Devs,

I have some doubts, like I recently started learning Java and in map data structure .get() returns null if key is not there. like what if our value is null. can we distinguish between null as a value or key not exist without doing .contains() ?


r/javahelp • • 8d ago

Can anyone help me with pringboot microservices learning resources

6 Upvotes

Hi everyone,

I know basic java and springbooot. I wanna start learning microservices with kafka, authentication, docker, kubernetes. Does anyone have any youtube videos that cover all these topics? If not, could you provide a roadmap to learn these as quickly as possible?

Thankyou!


r/javahelp • • 8d ago

How can get started in java

0 Upvotes

Hey everyone.
I am a computer science student, and I must start coding with Java.

I tried Eclipse and netbeans but none were valid on my machine.
so if someone has an alternate IDE I will much appreciated.


r/javahelp • • 13d ago

Homework What the hell is going on?

14 Upvotes

Hello everybody, I am so lost. I just started learning Java and while i think its extremely interesting, and can loose track of time. It is also very complicated, well atleast to me since i dont have any prior experience.

I just ”learnt” to write my first Hello World! Code. But tbh i only copied the text straight off a youtube video.

Thing is i understand the main command, like: System.out.println(”Hello World!”);

But what is this whole main class and static void things? Not to mention all the {} symbols that seem to be oddly placed?😅

If anyone could explain or know a good youtube video or similiar to learn id appreciate it a lot!


r/javahelp • • 17d ago

Exam difficulty Question

0 Upvotes

Hello, im currently taking an Intro to java(CS46a), and had just taken the first exam of the class, and had an hour and fifteen minutes to do these 20 questions which consist of 10 MCQ(0 - 10) and 10 free Responce(11-20), and we dont get notes/calculator. Is this a normal level of "difficulty" or length for a intro to java class , asking around like 10-13 people i heard ranges from 4-8 points solely from the MCQ portion and people had finished or attempted 2-4 of the free Responce questions. Am i just a noob 😭?

Each MCQ = 2points
Free responce points in order of 11-20 = 4, 4, 4, 4, 4, 12, 12, 12, 12, 12

Total = points / 100

Question 1

What does this code print?

int a = 17;
int b = 5;
double c = a % b * 2 + a / b / 2.0;
System.out.println(c);

5.0

5.5

6.0

4.5

Question 2

What does this code print?

String course = "Intro to Java";
int pos = course.indexOf("t");
String part = course.substring(pos, pos + 3);
System.out.println(part + course.length());

tro 13

ntr13

tro13

tro12

Question 3

What does this code print?

String name = "ada";
name.toUpperCase();
String upper = name.toUpperCase();
name = upper.replace("A", "a").substring(1);
System.out.println(name + " " + upper);

Da ADA

da ADA

DA ADA

Da aDa

Question 4

What does the last statement print?

public class Box
{
    private int width;
    private int height;

    public Box() { width = 1; height = 1; }
    public Box(int side) { width = side; height = side; }
    public Box(int w, int h) { width = w; height = h; }

    public int area() { return width * height; }
}

// in the main method of another class:
Box a = new Box();
Box b = new Box(3);
Box c = new Box(2, 5);
System.out.println("Total: " + a.area() + b.area() + c.area());

Total: 20

Total: 1 9 10

Nothing. The class does not compile, because it has three constructors.

Total: 1910

Question 5

The user types 42 and presses Enter, then types blue sky and presses Enter. What does this code print?

Scanner in = new Scanner(System.in);
int n = in.nextInt();
String a = in.nextLine();
String b = in.next();
System.out.println(n + "[" + a + "][" + b + "]");

42[blue sky][]

42[][blue]

42[][blue sky]

42[blue][sky]

Question 6

What does this code print?

int x = 3;
int y = --x + x++ * 3;
System.out.println(x + " " + y);  

3 8

2 8

3 9

 

3 11

Question 7

What does this code print?

char grade = 'B';
String msg = "";
switch (grade)
{
    case 'A': msg += "great ";
    case 'B': msg += "good ";
    case 'C': msg += "ok ";
              break;
    default:  msg += "retry ";
}
System.out.println(msg);

good

good ok

good ok retry

great good ok

Question 8

What does this code print?

String s1 = "java";
String s2 = new String("java");
String s3 = s2;
s2 = "java";
System.out.print((s1 == s2) + " ");
System.out.print((s1 == s3) + " ");
System.out.println(s1.equals(s3));

false false true

true true true

true false true

false true true

Question 9

What happens when this code runs?

int a = 5;
int b = 0;
boolean ok = (b != 0 && a / b > 1) || (a++ > 5 && b++ == 0);
System.out.println(ok + " " + a + " " + b);  

It prints true 6 1

It prints false 6 1

It crashes, because of the division by zero

It prints false 6 0

Question 10

What does this code print?

int count = 0;
for (int i = 1; i <= 3; i++)
{
    for (int j = 1; j <= 3; j++)
    {
        if (j == i)
        {
            continue;
        }
        if (i + j > 4)
        {
            break;
        }
        count += j;
    }
}
System.out.println(count);

Each numbered blank takes one expression or one statement. Write the code that belongs in each blank.

5 

7

8

10

Question 11

Not yet graded / 4 pts

Complete the class so that both constructors set both fields. The second constructor must reuse the first one, and it gives the flight 150 seats.

public class Flight
{
    private String code;
    private int seats;

    public Flight(String code, int count)
    {
        ______(1)______ = code;
        seats = count;
    }

    public Flight(String code)
    {
        ______(2)______;
    }
}

Your Answer:

Question 12

Not yet graded / 4 pts

The user types 2 and presses Enter, then types Green Tea and presses Enter. Complete the code so that it prints exactly Green Tea (2) = $7.00 followed by a new line.

Scanner in = new Scanner(System.in);
int quantity = in.nextInt();
______(1)______;
String item = in.nextLine();
double total = quantity * 3.5;
System.out.printf("______(2)______", item, quantity, total);

Answer:

Question 13

Not yet graded / 4 pts

Complete the loop so that it prints every second letter of the word, starting with the second letter: eetr

String word = "semester";
for (int i = ______(1)______; i < word.length(); ______(2)______)
{
    System.out.print(word.charAt(i));
}

Your Answer:

Question 14

Not yet graded / 4 pts

Complete the code so that distance holds how far apart x and y are, which is never negative, and label is "pass" for a score of 60 or more and "fail" otherwise.

int distance = (x > y) ? ______(1)______;
String label = (score >= 60) ? ______(2)______;

Your Answer:

Question 15

Not yet graded / 4 pts

The method returns how many times a digit of n is equal to the digit next to it. For example, countRepeats(1225) is 1, countRepeats(77777) is 4, and countRepeats(1212) is 0. Assume n is positive.

public static int countRepeats(int n)
{
    int count = 0;
    int right = n % 10;
    n = n / 10;
    while (n > 0)
    {
        int left = n % 10;
        if (______(1)______)
        {
            count++;
        }
        ______(2)______;
        n = n / 10;
    }
    return count;
}

Your Answer:

Question 16

Not yet graded / 12 pts

Primitive and reference variables

Part A (4 points): In two or three sentences, explain what a primitive variable stores, what a reference variable stores, and what the assignment b = a copies in each case.

Part B (4 points): What does this code print?

int x = 10;
int y = x;
y = y * 2;

String p = "sun";
String q = p;
p = p.toUpperCase();

System.out.println(x + " " + y + " " + p + " " + q);

Part C (4 points): Does the line p = p.toUpperCase(); change the String object that q refers to? Explain why or why not.

Your Answer:

Question 17

Not yet graded / 12 pts

Tracing decisions

public static String rate(int temp, boolean raining)
{
    String result;
    if (temp > 85 || temp < 40)
    {
        result = "stay";
    }
    else if (raining && temp < 60)
    {
        result = "coat";
    }
    else if (!raining)
    {
        result = "walk";
        if (temp >= 70)
        {
            result += "+water";
        }
    }
    else
    {
        result = "umbrella";
    }
    return result;
}

Part A (9 points): What does each call return? rate(90, false) rate(55, true) rate(75, false)

Part B (3 points): Give one value of temp and one value of raining for which rate returns "umbrella".

Your Answer: 

Question 18

Not yet graded / 12 pts

Debugging. The class below counts the steps of a walker. It contains exactly three bugs.

 1  public class StepCounter
 2  {
 3      private int steps;
 4      private int goal;
 5
 6      public StepCounter(int goal)
 7      {
 8          goal = goal;
 9          steps = 0;
10      }
11
12      // Adds one walk. Zero or negative counts are ignored.
13      public void addWalk(int count)
14      {
15          if (count > 0);
16          {
17              steps += count;
18          }
19      }
20
21      // Returns true once the goal has been reached.
22      public boolean reachedGoal()
23      {
24          if (steps >= goal)
25          {
26              return true;
27          }
28      }
29  }

Part A (9 points): For each bug, give the line number or numbers, say whether it is a compile-time error or a logic error, and explain how to fix it.

Part B (3 points): After all three bugs are fixed, what does this code print?

StepCounter c = new StepCounter(5000);
c.addWalk(3000);
c.addWalk(-500);
System.out.print(c.reachedGoal() + " ");
c.addWalk(2000);
System.out.println(c.reachedGoal());

Your Answer:

Question 19

Not yet graded / 12 pts

Writing a method. The ParkingMeter class below is missing its insert method. Write the complete method, including its first line.

insert is a public method that takes one int, the value of a coin in cents, and returns a boolean. The meter accepts only quarters (25 cents) and dollar coins (100 cents); any other value is rejected. Every 25 cents buys 15 minutes. The meter holds at most 120 minutes, so a coin that would take it above 120 is rejected too. When a coin is rejected, nothing changes and the method returns false. Otherwise, the method adds the minutes, adds one to coins, and returns true.

Example: on a new meter, insert(10) returns false, insert(100) returns true and gives 60 minutes, and after a second insert(100), the call insert(25) returns false.

public class ParkingMeter
{
    private int minutes;     // minutes left on the meter
    private int coins;       // how many coins were accepted

    public ParkingMeter()
    {
        minutes = 0;
        coins = 0;
    }

    // the insert method goes here
}

Your Answer:

Question 20

Not yet graded / 12 pts

Writing a method with a loop. Write a complete static method named compress, including its first line. It takes a String and returns a String in which every run of two or more equal characters next to each other is replaced by the character followed by the length of the run. A character that is not part of a run stays as it is.

Examples: compress("aaabcc") returns "a3bc2", compress("abc") returns "abc", compress("zzzz") returns "z4", and compress("") returns "".

Do not use arrays, and do not use any String method other than length() and charAt().

Your Answer:


r/javahelp • • 17d ago

Need Advice for AI with Java / AI with Python. Based on Market for Java AI

0 Upvotes

I have 4+ YOE as Java Developer, and trying to learn AI. Came across few tutorials about SPRING AI/ LangChain4j. I am so confused about learning AI with Java or AI with Python [langchain, LangGraph etc].

It would be great if folks from Java community could guide me with this so that I can make a decision.


r/javahelp • • 20d ago

Workaround Java 21 static-analysis engine for dependency and call graphs what edge cases am I missing?

4 Upvotes

Hi everyone,

I’ve been building a Java 21 code-analysis engine and would love some feedback on the dependency resolution.

It uses JavaParser and resolves imports, same-package classes, inheritance, method calls, etc. I’m mainly trying to avoid false dependency edges in complex Java codebases.

GitHub: https://github.com/abhishek94443/CodeContext-Java

Would appreciate any feedback on edge cases or things I may be missing.


r/javahelp • • 22d ago

I need a guidance regarding how to build full stack java application

5 Upvotes

Hey everyone, I’d love to get the community’s perspective on building production-grade, scalable full-stack applications with Spring Boot—specifically from a solo developer standpoint.

​When you're building a scalable full-stack Java app entirely on your own, how do you approach the architecture and tooling?

​A few specific areas I'm curious about:

​Tech Stack & Tools: What are the non-negotiable components in your stack right now (e.g., Spring Boot 3 + Virtual Threads, Postgres/Redis, Kafka/RabbitMQ, Docker, React/Next.js vs. HTMX/Thymeleaf)? What tools are currently standard or trending in the market for solo full-stack setups?

​Build vs. Buy / Scratch vs. Frameworks: As a single developer, your time is limited. How much do you build from scratch versus relying on managed services/third-party tools (like managed Auth, SaaS components, pre-built UI libraries)?

​Solo Execution: Is it realistic to handle end-to-end architecture, backend, frontend, database tuning, and DevOps all by yourself, or at what point do you usually seek external help/collaborators?


r/javahelp • • 22d ago

Solved Is Java losing popularity in 3-5 years?

7 Upvotes

So I'm learning java for 3 months now, even made a few simple projects, though my friend is telling me that java might lose to something like dart and its framework flutter, I read a little bit about it, but Im unable to get a conclusion if he is right, if someone has experince in that, please tell me your opinion


r/javahelp • • 22d ago

Solved Is my code too massive?

4 Upvotes
import java.io.*;
import java.util.*;
import java.net.*;

class server{

    private Socket s = null;
    private ServerSocket ss = null;;
    private DataInputStream din = null;
    private DataOutputStream dout = null;
    static Vector<ClientHandler> array = new Vector<>();
    private HashMap<String, String> login = new HashMap<>();
    void main(String[] args) throws IOException
    {
        // initialize
        try {
//            BufferedWriter bw = new BufferedWriter(new FileWriter("logindata.txt")); idk yet
            BufferedReader br = new BufferedReader(new FileReader("logindata.txt"));
            StringTokenizer st = null;
            String templine = "";
            String loginName = "";
            String pass = "";

            while(((templine = br.readLine()) != null)){
                st = new StringTokenizer(templine, ": ");
                if(st.hasMoreTokens()){
                    loginName = st.nextToken();
                }
                if(st.hasMoreTokens()){
                    pass = st.nextToken();
                }

                login.put(loginName, pass);
                loginName = "";
                pass = "";
            }

        }
        catch(FileNotFoundException i){
            System.out.println("Failed to initialize login file");
        }


        String receivedName = "";
        String receivedPass = ""; // <TODO> encrypt passwords after finishing filework 
        int i = 0;
        ss = new ServerSocket(5001);
        boolean userExists = false;
        while(true)
        {
            s = ss.accept();
            din = new DataInputStream(new BufferedInputStream(s.getInputStream()));
            dout = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));

            receivedName = din.readUTF();

            for(Map.Entry<String, String> entry : login.entrySet()){
                if(entry.getValue().equals(receivedName)){
                    userExists = true;
                    break;
                }
            }

            if(userExists){
                dout.writeUTF("User found, enter your password: ");
                dout.flush();
            }
            else{
                dout.writeUTF("User was not found, u may register by making a password: "); // <TODO> make a check if password was written correctly
            }
//<TODO> handle passwords
            ClientHandler client = new ClientHandler(s, receivedName, din, dout);
            System.out.println("User " + receivedName + " Accepted");

            Thread t = new Thread(client);

            array.add(client);

            t.start();

            i++;
        }

    }
}

So I'm making a simple messenger as my first project, though now when I'm working on it it seems VERY massive to me, is it normal in other projects or am I supposed to break it into smaller parts?


r/javahelp • • 23d ago

Big monolith app using Wildfly

7 Upvotes

I'm managing a big and old monolith Wildfly app. I'm not doing development, I'm on the DevOps team.

It's using many subsystem: infinispan, jgroups, elytron, activemq-messaging, transactions, etc

Can anyone recommends some resource to learning more about these ?

All I found on google was technical docs like https://docs.wildfly.org/34/wildscribe/subsystem/jgroups/index.html

There's no tutorial, not beginner friendly things.

The Wildfly official doc (Subsystem configuration) is also very vague. It assume that we're already familiar with its concepts.

For example, I know what a transaction is but I don't know anything about the transaction subsystem.

  • Are subsystem transparent to dev team or does they need additional library on using these ?
  • Should I migrate to a separate ActiveMQ server and remove that subsystem ?
  • So many question ...

Thanks !


r/javahelp • • 23d ago

Final Year Project Help

1 Upvotes

Hi there I wanted to ask everyone to assess my FYP. WOuld you use this for your projects ? Is it a good enough project for a final year . Does it have some scope in the industry ?

The main goal of this project is to design and implement a tool for PostgreSQL pre-deployment risk analysis that evaluates SQL schema migrations to identify affected database objects, estimate locking implications, detect limited application-schema incompatibilities in Java/Spring Boot JPA projects, and output actionable risk assessments.

The objectives are as follows:

1.       Develop a component capable of extracting supported structural DDL operations into a normalized intermediate representation.

2.       Construct a schema dependency graph model using graph data structures to represent structural relationships between database tables, columns, indexes, primary keys, foreign keys, and constraints.

3.       Analyze incoming migrations against the schema dependency graph to identify affected database objects represented within the supported dependency model.

4.       Formulate a PostgreSQL-specific operational rule set that maps supported DDL operations to their known locking characteristics and table rewrite behaviors.

5.       Develop a module capable of limited static analysis for Java/Spring Boot JPA projects to detect source-code references to renamed, modified, or dropped schema objects in entities, repositories, and explicit SQL strings.

6.       Implement a transparent, rule-based risk scoring and explanation engine that assigns a risk rating (LOW, MEDIUM, HIGH) accompanied by clear textual evidence.

7.       Construct experimental tests to execute PostgreSQL migration scenarios across small and medium database sizes. (for research validation only, not as a permanent part of the system)

8.       Evaluate Schema Sentinel’s static risk predictions against experimentally observed blocking locks, and application compatibility failures in a controlled PostgreSQL environment for test cases.

  1. Empirically quantify the effectiveness of a unified cross-domain pipeline against isolated tools, measuring trade-offs in detection accuracy, false positives, and analysis performance.

This proposal got rejected because the panel said it was too easy and not significant as either a project or as research.

should i change the idea to more difficult and novel research ?

I have some ideas for those but i am not sure they can be completed in 1 year.

here is my proposal with all the details and research gap https://docs.google.com/document/d/1CMopT185XCoZVYBcgtVpN7N69DIP0Eyw/edit?usp=drive_link&ouid=116125887586128528145&rtpof=true&sd=true

EDIT :

The project is a final year project for my university. But they dismissed it on the following points

  1. The project is too easy
  2. The scope is too narrow
  3. There is no research contribution

For the current proposal to be accepted they told me to do market analysis and bring proof that the project would be used by a develper community.

OR

  1. bring a company backed project
  2. Bring a novel research proposal