Products · Product
Java
Raised as a usability problem by 495 people on Hacker News over 20 years (2007–2026), in 484 threads.
No issue was raised by at least 3 people in 3 threads this year.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
Every issue, all time, most people first
Applets take forever to start in the browserUnreviewed
20072026- Browser locks up for long load times when starting Java applets2025-12-08
- Applets took forever to load and were clunky and ugly to use2025-12-08
- Applets show a gray rectangle, load very slowly, and freeze the browser while loading2025-07-23
Needs an IDE constantly generating and fixing code to be usableUnreviewed
20072026- Large Java projects become impossible to navigate without an IDE, with 100+ method classes and inconsistent naming2024-12-24
- Spent months fighting the IDE and tangled framework abstractions instead of coding2024-03-17
- Hard to use without an IDE because of too much boilerplate2024-03-10
Checked exception syntax and tooling are so bad people avoid the featureUnreviewed
20072026- Escaping a checked exception to panic requires verbose try-catch boilerplate2026-05-26
- Can't catch all checked exceptions; catch blocks only allow one type originally2025-11-11
- Forces verbose try/catch boilerplate to wrap errors it can't handle, and awkward inside lambdas2025-07-13
Beginners must ignore hello world boilerplate, causing confusionUnreviewed
20072026- Beginners must memorise meaningless boilerplate syntax before doing anything useful2021-11-07
- Beginners must memorize lots of boilerplate, which is discouraging for them2021-11-07
- Basic hello world requires understanding many unexplained concepts, so beginners copy code blindly2020-04-12
Unclear which JRE or JDK versions to get and how to path themUnreviewed
20072026- Couldn't figure out how to package the Java app properly for Ubuntu; too complicated2023-12-09
- Confusing choice between Oracle JDK and OpenJDK at every install step2022-11-27
- Unclear which Java VM to install and how to build the library2021-12-02
Apps need complicated, fragile setup of JVMs, classpaths and scriptsUnreviewed
20072026- Java apps need wrapper scripts and java -jar invocation instead of running like native executables2022-10-09
- Calling Java libraries requires lots of boilerplate: instantiating many classes, anonymous callbacks, and bean wiring2022-07-31
- Hard to deploy Java code as executables, and the JVM adds frustrating complications2019-06-17
Installer adds toolbars via easily missed checkboxes; frequent update promptsUnreviewed
20072026- Had to jump through hoops to deselect bundled adware during install2026-01-22
- Tricked into installing bundled adware during a Java install, hard to remove2018-06-23
- Installer forces users to actively deselect bundled adware2016-04-08
Could not find a modern free JDK; only Java 8 availableUnreviewed
20072026- Couldn't find a modern JDK to download; only old Java 8 was available free2023-11-24
- Oracle's site only offers an old Java 8 JRE, hiding newer versions2021-02-15
- Searching for Java leads to a confusing Oracle page; users can't find a licence-free working install2019-05-20
Inconsistent rules for when generic types must be written outUnreviewed
20072026- Before generics, every element taken out of a collection had to be manually cast back to its type2025-10-12
- The '? extends' wildcard syntax is confusing and hard to understand2024-08-02
- Inconsistent rules for when generic types must be written out explicitly2023-03-09
Scary security warnings must be clicked through before applets runUnreviewed
20072026- Applets don't run automatically, users must click a run button2017-09-23
- Has to add domains to an obscure control panel and repeatedly confirm unsigned-code warnings to load applets2015-08-04
- Confusing security dialogs hide that the applet gets unrestricted access to the machine2015-05-26
Developers waste time working out which exceptions a method throwsUnreviewed
20072026- Must read all documentation to avoid surprise exception-throwing methods2025-02-05
- Declaring every thrown exception makes interfaces brittle and hard to evolve2024-12-19
- Must manually annotate exceptions all the way up the call chain2024-10-22
Reams of badly designed XML config take forever to learnUnreviewed
20072026- Runtime requires constant tuning and configuration, and XML config is hard to manage2017-07-04
- Configuring the tools is overly complex, with layers of XML and needless complexity2017-03-02
- Java tools require fighting XML configuration and many installed files2016-02-13
Verbose type declarations make code tedious to writeUnreviewed
20072026- Verbose type declarations make code tedious to write and hard to read2022-06-07
- Language is so verbose that writing code takes too much boilerplate2021-10-24
- Requires heavy boilerplate and repeating types, making code hard to write2020-11-14
Stack traces shown for misconfiguration instead of a short errorUnreviewed
20072026- Shows raw stack traces instead of clear messages for trivial user errors like missing files2023-09-18
- Error messages are obscure and stack traces are vast, hard to act on2022-11-10
- Stack traces are unreadable and omit the path of the file that failed to parse2022-09-09
Java UI apps have confusing layouts that are hard to useUnreviewed
20072026- Building forms in Java Swing is far harder than drawing them in VB62020-03-14
- Java UI elements are too rigidly separated, unlike flowing DOM layouts2014-12-30
- Swing GUI builders are quirky and unintuitive, making UI work take most of the time2013-09-14
Configuring the JDK to work with IntelliJ is too complicatedUnreviewed
20072026- Hard to find the right JDK or JRE download, often installing the wrong one2025-09-11
- Installing and configuring the JDK to work with IntelliJ is still too complicated2021-04-16
- Installing and configuring a JDK to work with IntelliJ is complicated2021-04-16
Syntax and compiler errors confuse beginners, who keep asking how to fix themUnreviewed
20072026- Beginners find the syntax complex and hard to grasp, and compile errors are confusing2017-03-21
- Syntax and compiler errors confuse beginners, who keep asking how to fix them2017-01-27
- Compiler error messages are unhelpful and hard to act on2014-12-10
Keeping Java updated on OS X is too hard, so users give upUnreviewed
20072026- End users must install and update the JVM, and many skip updates2022-01-06
- Sites lack instructions for re-enabling Java, so users can't tell how to enable it2013-10-22
- Keeping Java updated on OS X is too hard, so the user gives up2013-03-08
Easy to confuse == with .equals, causing silent misbehaviourUnreviewed
20072026- == doesn't compare strings as beginners expect, so they must learn .equals2025-07-24
- Easy to confuse == with .equals, causing silent misbehaving programs2021-08-09
- == compares object references, so equality checks behave unintuitively2017-12-25
Simple tasks need many files and the standard library complicates codingUnreviewed
20072026- Simplest file IO tasks need several classes, which is unintuitive2016-11-22
- Forces a file per type and lacks type inference, making everyday coding a chore2014-10-16
- Trivial file operations need several tens of lines of code, plus boilerplate2012-03-31
Overengineered code with many libraries is hard to debugUnreviewed
20072026- Too many abstractions and interfaces make the code hard to debug2025-09-06
- Code is overengineered with many libraries and classes, so it's hard to debug or understand2016-01-22
- Too many overlapping concepts make others' code hard to understand2009-06-01
Cannot easily run multiple Java versions; jars cannot specify runtimeUnreviewed
20072026- Must run jdeps on each JAR separately, and it is slow2023-01-17
- Can't run multiple Java versions easily; jars can't specify which runtime they need2022-08-09
- Jar version conflicts; loading jars in wrong order breaks everything2012-06-10
Java Updater popups appear on every startUnreviewed
20072026- Java's taskbar icon nagged users repeatedly to download large updates2023-07-19
- Annoying Java Updater popups appear on every start2014-01-25
- Java update failed repeatedly after the user tried to allow it, while nagging popups kept appearing2012-04-05
Javadocs are hard to wade through to learn core usageUnreviewed
20072026- Javadocs are frustrating to wade through to learn core usage2014-10-28
- Hard to learn an API from Javadoc; high friction and annoying to read2010-07-21
- Java's file, regex and string APIs are hard to remember and use without docs2008-07-23
Logging config files are poorly documented and hard to understandUnreviewed
20072026- Config options are hidden in XML and Spring Boot magic, and logging is split across hard-to-find paths2025-11-13
- Setting up logging config for each project is confusing, with unclear file names, locations and package conflicts2016-05-05
- Logging config files (.properties, logback.xml) are poorly documented and hard to understand2016-01-20
Big application takes over two minutes to start after compilingUnreviewed
20072026- Takes minutes to start and buried relevant settings in a 1000-line config file2021-12-16
- Big application takes over two minutes to start after compiling2021-08-03
- Slow startup and time-consuming deployment make the development workflow hard to work with2015-10-21
Verbose code with many abstraction layers is hard to readUnreviewed
20072026- Layers of tiny functions make codebases too hard to hold in mind2021-10-14
- Excessive abstraction layers make simple tasks much more complicated to follow2021-01-23
- Verbose code with many abstraction layers is hard to read and understand2017-06-19
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Finding GC pause culprits or bottlenecks requires painful profiling, heap dumps, or paid tools2026-10-18
- Heap dump tools are slow to process and the downloaded UI is clunky2026-09-27
- Menus don't follow the standard macOS layout, so features are hard to find2026-08-24
- Desktop apps built on Java and .NET feel laggy to interact with2026-08-16
- Doing anything requires sifting through dozens or hundreds of files2026-07-31
- Garbage collector is often extremely hard to debug, and advice is just to switch collectors2026-07-20
- Java needs extra effort and discipline to build low-latency systems, so the tool is hard to use properly2026-07-06
- Escaping a checked exception to panic requires verbose try-catch boilerplate2026-05-26
- Calendar class is a mess and horrible to use2026-05-26
- Reflection-based autowiring via naming conventions and annotations is hard to discover2026-05-13
- Java codebases with getters, setters and deep class hierarchies become impossible to follow2026-05-12
- Clicking a node triggers feedback far down the viewport, which is easy to miss; 'Open post' appears not to work2026-05-07
- Describes the site as very confusing, without saying what specifically confuses people2026-05-05
- Live code changes are restricted, so non-trivial incremental development forces restarts2026-04-30
- Cross-platform apps fail to resize columns, sort tables, take focus, and are hard to discover2026-04-17
- Simple settings require looking up and initializing many separate classes and values2026-03-25
- Authenticator.getDefault() is meant for interactive prompts, so using it for bearer tokens is confusing2026-03-25
- Java programs ignore system HiDPI settings and don't let users change their font2026-03-22
- Creating a bundled application with jlink and jpackage is painful, complex and often fails2026-03-18
- Had to jump through hoops to deselect bundled adware during install2026-01-22
- Final publishing of Java jars and executables is too tedious for users2026-01-02
- Can't easily produce a single distributable; GraalVM native builds are slow and hard to get working2025-12-31
- Browsers showed security popups and froze randomly when running Java or ActiveX plugins2025-12-08
- Browser locks up for long load times when starting Java applets2025-12-08
- Java-based software feels extremely slow and sluggish to use2025-12-08
- Java interfaces lag and visibly redraw widgets slowly on older machines2025-12-08
- Applets took forever to load and were clunky and ugly to use2025-12-08
- Disabling module encapsulation is hard to find and changes with every version2025-12-07
- Config options are hidden in XML and Spring Boot magic, and logging is split across hard-to-find paths2025-11-13
- Can't catch all checked exceptions; catch blocks only allow one type originally2025-11-11
- Finding where things happen means searching through many small verbose files2025-11-04
- Long option names only accept a single dash, unlike common conventions2025-10-24
- Before generics, every element taken out of a collection had to be manually cast back to its type2025-10-12
- Docs bury the simple way to show an image under pages of unrelated detail2025-10-10
- Docs only explain function signatures, not how the pieces work together2025-09-22
- Cannot validate or transform parameters before calling super in constructors, which feels counterintuitive2025-09-16
- Hard to set up and work with, slow download, no guidance2025-09-15
- Hard to find the right JDK or JRE download, often installing the wrong one2025-09-11
- Too many abstractions and interfaces make the code hard to debug2025-09-06
- Layouts are hard to use and customize; min, pref and max sizes often ignored2025-08-07
- == doesn't compare strings as beginners expect, so they must learn .equals2025-07-24
- Applets show a gray rectangle, load very slowly, and freeze the browser while loading2025-07-23
- Forces verbose try/catch boilerplate to wrap errors it can't handle, and awkward inside lambdas2025-07-13
- Frame-based navigation doesn't update the URL, so specific pages can't be linked directly2025-06-27
- Certificate store UI/UX is absolutely terrible and painful to work with2025-05-18
- Dependencies resolve to different versions locally and in CI, breaking deployments2025-05-07
- Must pre-declare a null variable and assign it inside each branch, which is awkward2025-03-26
- Web applets gave a terrible experience, with odd-looking GUIs that did not match OS controls2025-03-05
- Simple tasks need several classes and interfaces due to required patterns2025-02-19
- Java build tooling is mandatory and painful to use for developers2025-02-16