Why do people hate it?

The language is very much alive, with oracle having release java 9, 10, and now 11 being just around the corner
The JVM has improved with new garbage collectors, and it's not too bad in terms of speed. Sure, it's not C++ level, but it's not slow as python.
Heck, the JVM is good enough that people are developing new languages for it, Kotlin and Scala.

Java is still used very actively in enterprise and android app development, it's hardly dead.
Why do people hate it though?

Attached: dbgxt2rvpd26udoyzcqn.0.0.jpg (1200x800, 43K)

Other urls found in this thread:

techempower.com/benchmarks/#section=data-r16&hw=ph&test=db
pzemtsov.github.io/2018/07/18/building-queue-from-cpp-to-java.html
twitter.com/SFWRedditGifs

because it's popular

Popularity is no indicator of quality. Stop trying to use it as an argument.

- Extremely verbose
- Massive runtime
- Forced OOP
- Does not work well with low-level Unix stuff
- Not fun to program in at all

Most people think JVM = Java and as everyone would agree, Java is a complete pain to work with. So, that's why people hate it.

>verbose
>forced oop
>not fun to program in
JVM dialects fix this.
>massive runtime
Huh? It's far smaller than every other language other than C/C++.
>does not work well with low level linux
The JVM was designed to be cross platform.

JVM languages all share the same issues as Java because JVM bytecode is tightly coupled to the semantics of Java.

see: every single JVM shitlang having type erased generics

well, any language that runs inside a runtime (java, python, c# (.net)) will never be as good as C/C++ for accessing low level stuff
and that's because they aren't designed for low level stuff

> - Extremely verbose
> - Not fun to program in at all
Pretty much these. Java is so fucking verbose which makes it unfun to work with. At least it pays the bills and I can do fun stuff when I'm not working.

JVM itself is pretty good though.

because it reminds people of their work on enterprise shitware

I don't hate Java I just hate working with Indian contractors.

People hate it for the same reasons it's popular.
The majority of the world's programmers are employed working on various corporations internal systems, and for those it's probably not a good investment of debugging time to get a lower-level language version debugged. Not to mention that the majority of programmers couldn't manage something like that..

I wouldn't honestly recommend that corporations use something without GC and runtime type safety. Mostly that means java or c#.
The upshot of which is that the majority of pedestrian, bog-standard code written by pajeets ends up being java. It's hardly auspicious.

Many of the programs I write are inherently unportable, so not being able to drop down to low level interfaces to do the shit that needs to get done is very problematic.

Java is not as verbose as it used to be.
And C++ with its "const noexcept final override" qualifiers is actually becoming more verbose...

I use C++ because I have to (low latency stuff) but otherwise Java is a much, much nicer language to program in.

In fact, the best C++ is Java-style C++ (i.e. Qt instead of the STL crap).

C++ is shit too.

it's actually interesting that java was originally developed with the goal of fixing C++'s mistakes

I like kotlin.

Attached: 567.png (202x44, 3K)

I don't

that just looks completely unreadable

Attached: 1535826665616.jpg (800x807, 340K)

what are you a fucking brainlet?

Writing Java makes me want to stop programming.

There's got to be a better way to do this:
Type typeInstance = new Type()

in an ideal world what would you type?

For a person who sees it first time? Sure. For me haskel is unreadable. It's just a list of lambda which will be executed in context of object with type S and return object with type S and that list can be nullable.

You can use var now.

"executed in the context of object with type S" this shit's retarded

just make it an S -> S why you gotta complicate shit

Type instance();

and where would you store that object, how would you access it afterwards?

Attached: 1507850201808.gif (480x264, 1.54M)

What about:
Type(param1, param2) instance;
treating the type declaration as the constructor thereof

I don't hate Java, but I don't like it either.
>Irritatingly verbose
>Shitty math libraries
>OO, but not pure OO
>Not fun to use

Because it is useful to make shit like on the pic. You are making the lambda an extension of the object, so the lambda receives the object as "this" reference.

Attached: 435345.png (1069x821, 40K)

> People don't use Lombok because "it's a hack"
> People use google's Immutables abortion instead, which just adds more fucking ceremony what the fuck.
> People add on fifteen code generators instead of dealing with "verbosity", and now instead of having 4-5 java classes, you have 8-10 fucking configurations instead that "saves you work" but all they do is generate interfaces and shitty implementations that you need to work around instead. Yes, I get that generating shit from wsdls make sense but ffs, stop generating everything all the time!
> So now nobody uses the good tools, everyone uses the wordy tools, everything takes more effort than doing it manually, but user, imagine how shit it would be without these tools!

When a class has legit 476 lines of imports, something's wrong.

It all started with Spring and it's @Autowire bullshit. Fuck Spring.

This.

Me, the older I get, the more I prefer languages like Java. It's simple, clear, stable, has a big standard library, and a huge community behind. You can find third-party libraries for everything, even OpenGL or Vulkan bindings, and these are well maintained. No feature bloat on the language itself, you can learn it in a week. With Java you focus on your code instead of focusing on the language syntax.

oh no what a terrible thing

Thanks god you can now use spring in functional way and set up all that shit via the code and not the shitty xml gibberish.

>- Extremely verbose
Good thing. Well named classes and variables makes work much easier
>- Massive runtime
Not really.
>- Forced OOP
Not really. I would prefer if it forced more OOP (since it is oop language...) but new version are leaving OOP...
>- Does not work well with low-level Unix stuff
It is not meant for that.
>- Not fun to program in at all
And this explains your problems with java. Seeing verbosity and oop as issues happens to people that program for fun. Not for real work. Basically you are neet.

This, all of these are true.

Verbose is good, JVM is fast and unless you are doing embedded the ~200mb runtime is fine and with java 9 you can make self containted jars that are only a few mb in size

Don't use spring at all.
Use vert,x

It's fast, lean and no autowired bullshit
techempower.com/benchmarks/#section=data-r16&hw=ph&test=db

this

I personally love the verbosity of Java. It's as specific as it needs to be while avoiding eyesores like >>, ::, __name__, *args AND **kwargs.

I love programming in Java. IDEs are powerful as fuck, making it all so fucking comfy. Need getters and setters? Klack generated. Need to refactor/move some class? Klack. Done. So I don't really get the verbosity argument.

The ecosystem is one of the best too. Need some third party library? Maven this, maven that. Shit builds literally anywhere. Just like that. And you'll find all you'll ever need. And it's maintained too. And actually works.

Also JVM is fast.

Well, yes. I've tried Vert.x some time ago and now I think I will use it next time I need to write a backend. Especailly love it with kotlin coroutines.

Where's the reference, you fuck?

Android doesn't use Java.
There is no Java in Android.
You can't run Java in Android.

There is only the Android api, you can't use the java api because the runtime doesn't support java.

I don't think java is a bad language. It definitely has its faults, but I've always considered it reasonably clean (well, so far). However, those updates are the one thing that I am getting fed up with.
Pretty sure the nr1 reason for all those updates aren't so much necessary improvements as they are reasons to keep the industry stocked with work.

>Why do people hate it?
I'm old enough to remember how horrible the original Windows implementation of Java was on PCs. That poor implementation took the shine off Java for me permanently.

Oh that and dynamically laid-out UIs. That never looked good.

Oh and Eclipse takes five minutes off your life for every minute you use it. Taking up smoking is safer.

> Extremely verbose
> Not fun to program in at all
Sure, it's not a scripting language where you can hack in a lot of functionality in a few lines, but that has its advantages. The verbosity helps with reading the code even without having comments, the extra layers gives even more flexibility, although most people probably won't care what kind of reader they need to parse some text file, the few that do have the choice. Lastly the fact that it's strongly typed makes it much easier to debug.
It's actually a blessing with big programs, not so much small ones.

> Forced OOP
Just a minor inconvenience to those that don't know it. I prefer it. Again, once a program gets to a certain size, or you're working on it with multiple people, the separation OOP gives you is great. And forced means nobody can sneak in functional shit.

> Massive runtime
> Does not work well with low-level Unix stuff
Valid points. It's not a language meant to do low level stuff or build small tools with. It's so OOP it expects to operate entirely in it's own world, leave the rest to whatever it runs on.

dumb boomer

I am Generation X, not that it matters. Attacking me personally changes nothing about what I wrote.

I like scala

Attached: tidz.jpg (1440x900, 436K)

it changes everything because all your points are extremely outdated

harder than python, slower than c++; there's just no proper usecase in between them: want programs that are fast and easy to develop? want performance? want neither? than java is for you!

I didn't know you people still existed

Is this the designated thread?

Attached: pooinit.jpg (630x405, 61K)

*want both => java

Java is almost as fast as C++ save for heavy number crunching (in which case you can still use something like nd4j) and more maintainable, it can even be faster than C++.
Proof?
pzemtsov.github.io/2018/07/18/building-queue-from-cpp-to-java.html
techempower.com/benchmarks/#section=data-r16&hw=ph&test=db

That you think python has any usecase at all save for small scripts tells me a lot about your knowledge of software engineering.

>That you think python has any usecase at all save for small scripts tells me a lot about your knowledge of software engineering.
more like you expose yourself here, this is becoming more and more false

It used to be much worse than it currently is.

The main downside I can think of is that it still has too C-inspired syntax (not everything is an expression, too many things are statements which don't compose well) and something like Kotlin has nicer syntax. The other is the excessive IDE culture which makes it annoying to start a project without an IDE and a hard to configure build system to manage dependencies.

Java is pretty comfy by now, and it's about to get type inference and value types.

In meme startups maybe
It is not considered a language for serious development in any big corporation where things actually matter. The popularity of python is solely tied to its popularity among fresh cs students and bootcamp zoomers, who think that because they know their babby's first programming language that they can apply it to everything.

it already has type inference

It's nice for FP and JVM. I'm finding myself moving to haskell more and more, but I think scala is the second best FP language out there after haskell.

Attached: 1255997139047.jpg (677x664, 58K)

Yeah Java is getting nice features now. They're talking about adding pattern matching and more.

But the problem then is that you're just polishing a turd. Sure the features are nice but it's going the C++ feature-creep way. It makes sense for Oracle, since so many people use Java, but I don't see how it makes sense for individuals to use a language that has schizophrenic functionality just for the sake of backwards compatibility and tradition.

Python is *enough* for most straightforward projects (and not just scripts), look up Bots (the EDI server) for a good example

Does it matter much if I learn C# before Java?

Java is simpler and easier than C#. You'll probably have an easier time learning Java first. On the other hand, if you know C# then you essentially already know Java.

Nope
Recommendation if you want to learn java: mooc.fi, go to the english site and do the courses.

>Why do people hate it though?
Microshaft

They're the reason. Basically they've created C# to fuck Java over. Same syntax but just extended enough to be incompatible. Same old embrace, extend, extinguish.
My opinion.

Java is not the only one to do it that way...?

C# has more features desu

that isn't automatically a good thing
see: C++

Yep. It was pretty obvious when C# came out too.

I think C# exists as a necessity for Microsoft. Microsoft had tried J++ and J# and both failed. At that point the only language they had made themselves was Visual Basic which kept going through significant redesign stages. Visual Basic sucks as a language so it is not hard to see why Microsoft was interested in a language that was strongly typed but not nearly as a clusterfuck as C++.

It's a good language from a speed & reliability perspective, but people hate it because you have to either write unmaintainable code with it or type so much to attain maintainability that you get carpal tunnel. Some features it needs badly:

1. A literal notation for maps.
2. A boilerplate-free way of sharing code that does not abuse inheritance.
3. Some way to extend new interfaces to existing types.
4. Real lambdas.
5. Destructuring-bind
6. multiple-dispatch
7. A non-half-assed type system.

That's just off the top of my head. I use Java, and it works great, but I curse how obtuse it is constantly. I think if you solved 1 & 2, 95% of people would stop complaining.

most of your points are fine but 1 and 4 are retarded

Why would you use Java if you don't want OOP???

you forgot the ;

it's a better language for general programming than C++

"everyone" hates languages that are better than C++

Attached: Bjarne-Stroustrup-Quotes-1.jpg (2000x872, 110K)

Werds of wisdom.

shut the fuck up, you dirty pajeet

What editor, theme, font is that?

But which one do people complain about the most?

I agree but
>JVM dialects fix this.
What? I don't think people understand how fragile and inferior other JVM languages are. To even interface with Java code, Scala comes with a complete Java front-end! No other JVM language, not even Kotlin, comes close to Scala's robustness at interfacing with Java.

When I make a mistake in java I needed to redeploy my WAR and restart the WAS. It takes too much time for 1 mistake that I fail to fail fast.

Android Studio
Dracula
Consolas 18

>t. can't program for shit and only cares about the editor

What the fuck are you talking about? Kotlin is 100% interoperable with Java. Unlike Scala.

Based.

OSGi exists. Update your bundles at runtime.

>using war
>using was

dumb boomer. Use embedded http servers for each application like spring or vert.x do it

You are mostly right, but making my workflow fun is important to me. I code because I find it interesting and fun. I would do it even if nobody paid me for it. I think this is the difference between a good programer and a pajeet who is basically forced to write code.

Python is easy to learn, hard to master. It's a highly flexible language that has options for a wide range of tasks, from writing robust backends to using it as an orchestrator language for heavy compsci stuff. I know that its easier to shit on tech that you don't understand but it's really fucking pathetic and exposes you as someone who is really insecure about his knowledge...

Attached: 7331.jpg (570x467, 74K)