technically, char is unsigned. For practical purposes use ByteBuffer.
>no freestanding functions
you can "import static" all the static functions you want; it's not any different than C, where you need to include the headers.
> pom files are a huge pain
That has nothing to do w/ java, itself, like at all.
>you can't actually use javac to compile your code. everything is so big and complicated you have to use ant, gradle, maven, etc.
If you use ant, how did you get to use pom? That's pretty much saying that using 'make' is terrible. For personal projects that involve no web, I don't quite need anything else but the JDK, itself. In that case, it's totally doable to call javac form the command line.
Write class Hello { public static void main(String[] args) { … }} into a Hello.java file and issue java Hello.java and it will compile and run your code. It hardly gets easier than that.
Also, it’s a bit unfair mixing in build tools for beginner courses - I doubt beginners start with python virtual envs either. And then don’t get me started on the multi giga node folder hell that you get from a simple Js project.
1. no unsigned integers
2. no freestanding functions
3. pom files are a huge pain
4. the com.blah.blah.blah ridiculously long package path precedent makes it awful to work with if you don't have an ide
5. you can't actually use javac to compile your code. everything is so big and complicated you have to use ant, gradle, maven, etc.
6. too much boilerplate. "public static void main" etc.
There's a few more, but they'd take more than a sentence to explain.