Java hate

I'm working on a school presentation with topic "why people hate Java" and I'm searching for some meaningful reasons. I have not much experiences with Java, so I honestly don't know any (yet).

Attached: [email protected] (1224x618, 11K)

Other urls found in this thread:

docs.oracle.com/javase/tutorial/java/IandI/abstract.html
twitter.com/AnonBabble

Could've just started a thread asking why people hate java OP

long to type identifiers everywhere
used to be really slow
still a fat hog with memory usage
no unsigned types, making it decidedly inconvenient to work with binary formats
something about OOP
something about CLASSPATH
something about Swing
something about JNI

Frankly, it's just an ancient language with many outdated attributes, lack of convenience syntax, and unintuitive and verbose attributes cluttering all over the place in a patchwork hobble. Look how god-awful it is to do something as simple as iterating in Java (much less do lazy-loaded functional streaming) and compare it to a modern language. Or even something slightly less ancient like C#.

The JVM is a piece of shit. It is slow, a memory whore, and it's a fucking joke.
Java has no unsigned types.
No operator overloading.
No custom structs/values.
No properties.
No delegates.
The standard library is a joke.

This is just a small portion of problems.
Now adays, the strengths Java had in the past are now gone mostly. You really have hardly no reason to use it anymore when things like Python, Ruby, etc exist for cross-platform software.

> No operator overloading
fucking this

Don't forget to mention the Pajeets

IF you have a whole slide dedicated to Pajeets I will personally wire a small amount of BTC or ETH to your wallet (around $20 worth)

>overt racism
>school presentation
>half the audience is likely a pajeet
good idea niggerfaggot

>The JVM is a piece of shit. It is slow, a memory whore, and it's a fucking joke.
How to spot someone who has no idea what he's talking about.

It's okay because Trump does it amirite

I'm guessing by starting this thread OP wants to succeed with this presentation. Props if he does mention the pajeets though.

let's see some benchmarks, then.

How can you recommend python when it's slower than java?

It also encourages bad design like builder and factory and the shittiest interop.
Their GUI libs are old buggy magic and the IDEs are awful.
They have no idea what a proper modern syntax is. They fucking use @ for 'annotations'.

Many people believe that hating what's popular makes them cool. It makes you hip and gets you attention and people talk about you and shit. Hating Java and being a flat earther are the same thing at their core.

He could say something to the effect of: "People also do not like java because of the bad reputation it has with being used by Indians who are bad at programming, resulting in bad code / programs" something like that ya know.. slide it in there

What's the quintessential modern language syntax?

It is subjective but the std design is cancer.
System.out.println?
what the fuck? Even sepples knows it is c(onsole)out.
Print in a modern PL? Even pascal calls it WriteLn

You are a fucking retard.
Java has TONS of issues.
>Ignores all my other arguments
nice.
Python was just an example of why the argument of: "java good becus le cross platform ebin meme!!!" is bullshit, since that literally is the only thing it has going for it.

I don't really like java but if I'm making a shitty little application (ie. my shitty auto typer) and I don't feel like porting it from gnu/linux --> windows to use on my desktop I'll do it in java because lazy

>Java has TONS of issues.
brb, telling the whole world to make everything stop running on JAVA and instead do something that costs more money

It pays me so damn well, though

And that's fine.

Your stupidity continues to astound and impress me.
The reason why the world runs Java at this point is because a lot of enterprise applications were written in it back when it was being memed and the memes were mostly true:
>Java is good for cross platform (this is no longer the case, as there are now more options to choose from)
So, the end result is now you have all these *old* applications in Java that are too big to properly be ported to another, more efficient language.

What this means is - someone has to maintain and work on these projects, so that leads to people learning Java to do that, and to idiots like yourself learning Java because you think it's actually good because of all the applications floating around running it for the reasons I stated above and you think it's still viable.

It is very similar to COBOL - there are tons of old legacy applications floating around, and nobody fucking knows how to write it anymore or how to port it to another language, so they just pay out the ass for someone who knows COBOL to manage it. That's pretty much where Java is heading after it finally dawns on idiots like you that Java is truly a piece of shit.

That being said, I have high hopes that you some day will recognize the error of your thought process and begin to finally ask questions and think for yourself.

Have a nice day user.

And also, if you want to try to further argue the case for Java with me, then you can start by deconstructing these criticisms here: Until you do that, I am done talking to you.

>String str = new String("Hello");
>str == "Hello";

>false

interface Language {
public abstract boolean isComfy();
}

class Java implements Language {
public boolean isComfy() {
if ("Java's comfy tbqh" != null)
return true;
else
return false;
}

public static void main(String[] args) {
Language java = new Java();
if (java.isComfy())
System.out.println("Fuck you, OP. Java's comfy!");
else
System.out.println("Agreed. Fuck that piece-a-poo.");
}
}

Attached: Java.png (558x1023, 51K)

This is because it compares the memory addresses iirc.
> That being said it's still shit

- It is COBOL reincarnated
- It is fundamentally a bad idea instead of a write once compile everywhere language does a frankenstein compilation to Java bytecode and then JIT interpret everywhere
- It is not cross compatible between different versions ( let alone Oracle/OpenJDK "flavors")
- Crazy security vulnerabilities again and again
- Incredibly memory heavy, need the whole jvm runtime to run hello world.
- Incredibly bad libraries for anything
- Incredibly verbose
- Used by idiots and pajeets
- It is the main reason android is so slow and requires a fuckton of RAM has this power consumption needs so many cores etc
- It is backed by Oracle and whatever this entails ( SUN microsystems where cool guys however )
- Everything is an object, no way to understand what will get executed in an end program or go low level to improve performance
I am too bored to write more..

Attached: 29683829_10155705356698040_191442656776159232_n.jpg (615x768, 51K)

put this pic in your slides

Attached: 5F63D17C-B8B1-442C-B62F-B89A1C9168D9.png (500x855, 143K)

And this one

Attached: A9A5CC11-A51E-45C0-A875-D954EA4B6B3B.png (942x739, 93K)

>beautiful and cleanly designed language
>C#

Attached: human hand.jpg (526x437, 30K)

- You will end up needing to use JNI at some point if you plan to do anything remotely efficient with your software/hardware which will then be written in a proper language and will defeat the whole Java "portability"

>What are primitive data types?

Attached: java2.jpg (450x600, 55K)

some more supplementary material for your school presentation

Attached: java.jpg (450x712, 77K)

Literal pajeet code. Thats not even javas fault

Nobody that writes java actuslly uses that though everyone uses a logger to write out to file s

>thinks JVM is slow
>recommends Ruby
Alright retard. It's not my fault your too stupid to turn on GC logs and tune the garbage collector. Well written code running on a properly configured JVM is about as fast as you can get without resorting to writing everything in C.
>No operator overloading
What the fuck do you even need operator overloading for?
>No custom structs/value
Again, what's the fucking point?
>No properties
The lack of properties does suck
>No delegates
@FunctionalInterface
>The standard library is a joke.
The standard library is fine. Stop using Java 6 like a pajeet.

I bet the JVM isn't smart enough realize isComfy is defined in compile-time and inlines the call, and that the second branch is never reached so it discards it.

So it sucks.

So what do you suggest instead of Java?
>inb4 some non-OOP language or slow as fuck Ruby/Python

why people hate java. nunber 15:oracle java. the lqsat thing you'dwat in your orcale porogrammign language is omebody'selse 's objects.

If you're not using log4j2 with async loggers, you might as well just chop your dick off
>not using .equals
Pajeet detected.

it is not clean like lisp but it's a hell of a lot better than Java

Because in the brink of web 1.0 java applets where the main gateway for exploits to invade systems.

Not him but C# is better than Java in every way.

>acting like operator overloading is a good thing

it's not. not trying to defend java here since i agree it fucking sucks, but operator overloading is almost always cancer (it also leads to niggerlicious code like std::cout

It's just Microsoft's Java. How is it better? they are equivalent

Or maybe they didn't bother optimizing for retards who can't be bothered to notice their IDE/PMD/Findbugs telling them to clean that shit up. I want the JVM engineers turning the default loading factor on ConcurrentHashMap and tweaking the G1 collector, not optimizing the platform for pajeet code

>whaaa whaaaa slow languages
stop bringing this fucking (((((argument))))) up as if anyone at all is going to notice the length of time it takes for your shit to run. The literal only argument to not use ruby or python is if you're doing extreme numbers programming, who the fuck is doing that except anyone doing research at uni? stop spreading this bullshit as if it matters

Unironically because of Pajeet. Indians do everything badly. Very badly. Like cringworthy, terrible.

When the Indian government started pushing kids into software development they were all taught java because of it's potential to be an "employable" langue. Therefore most java was written by the eternal human poos.

Because of this anyone who's had to work with java has had to work with people from India. And anyone who's had to ever interact with an Indian hates life and wants to off themselves.

You might think I'm being edgy but what I said is the truth. People never hated java, they hated Indians but because it's politically incorrect to hate Indians, they hated "Java."

off the top of my head:
structs
delegates
events
built-in async
LINQ
not as limiting with regards to file structure - not one class per file like java
reference libraries at a project level rather than per-file, so you don't need a wall of imports in every file
can use pointers if you really need to, which is a nice option to have
.NET build/package toolchain is a lot easier to work with
standard libraries are a lot more understandable (opinion)

I use Java professionally, but I prefer the C#/Microsoft ecosystem to the mishmash of thousands of choices for any problem that Java presents. I really like Visual Studio, a lot more than IntelliJ.

Are you fucking retarded? Rails isn't even thread safe. It relies on pre-fork for multi processing. Between Rails and ActiveRecord, most real world Ruby applications are extremely difficult to scale up to millions of users. Compare that to Java, which lmax has gotten to handle 6 million transactions per second in a single jvm process.

When you're paying engineers $200k/year each to tune your app to support millions of users, it absolutely makes a huge difference whether you're on Java or Ruby. In some cases, millions of dollars per year.

Why are you bringing up rails? We're talking about languages, not frameworks. Other than that, none of us here are writing software for millions of users. Don't kid yourself. Use the right tool for the right job, and ruby/python are by far excellent languages and have done so much to push the ecosystem. You want to bitch about scaling when such a small amount of people are actually scaling to that size? Just because you don't use ruby for muh 6 million doesn't mean you can't do it for a good 200 thousand like any typical application.

>all that nitpicking
it's literally the same thing with a different name

those are two (2) different objects, == compares object identity.

>nitpicking
I mean it's really not when it helps productivity but okay.

>The JVM is a piece of shit. It is slow
No. Where the fuck did you even see this?

> a memory whore
Marginally, but by and large having a bit of overhead is not relevant enough even for the big web servers and big data... which often to almost generally run performance critical things on the JVM BTW

>structs
That is true, Java does not have those. I personally haven't found a need for them when I'm working in C#, and I certainly haven't missed them when I'm working in Java.
>delegates
Java has basically the same thing. Functional interfaces
>events
Java offers events in Swing (which is shit, btw), which is about the only situation where you would use basic events anyways. In large web applications, you're probably going to want to use something like Kafka or ActiveMQ for events anyways
>built-in async
What are you referring to here? Java has first class async functionality as well. Are you referring to the async/await syntax?
>LINQ
Have you looked at Java's stream API?

Honestly, if I could pick one C# feature and have it added to Java, I would probably pick the yield keyword above anything else, though C#'s much better type inference would be great too.

>lisp
>clean

Attached: terry reaction.png (400x800, 1.24M)

Structs are literally public classes, they go against Java's philosophy (and you can just make everything public if you want structs anyway)

What is JavaFX.
What is Intellij Idea.
Python uses @ too.
C# uses [].
What do you mean?

>Calls JVM slow
>recommends Python
HAHAHAHAHAHAHAHAHAHAHA
You fucking kids are hilarious. Zero industry experience and no idea what you're talking about, as usual. Most likely you kids are just angry at your unis for making you learn Java. Brainlets hahahahahaha

People hate it because its a massive, mature language made for massive, high availability back end systems. When your average self-taught programmer who works at a digital marketing agency (at best) tries to read 'Design Patterns' by GoF it will seem like insane overkill because they have never written a program with 50,000+ lines of code.

In C++ yes, but in C# no. In C# structs are value type objects. They are allocated in the stack instead of on the heap (unless they get boxed). Structs vs classes in C# is akin to int vs Integer in Java in that sense.

>>Declares a public abstract on interface.
>>Uses if/else to return result of boolean comparision.
>>Reference comparision of internalized string.
Good luck with burger flipping 101.

Oh I see, thanks.

I've been thinking in getting into C#. But at the same time I dislike the MS stack. Is there something good about C#. Should I give it a go?

Attached: sample_5e6b367e6fc76c266755fee986f827294c744ecd.jpg (850x1131, 200K)

I bet you also like PHP too don't you?
>php ius used by le ebin 40% of internet XDDDDDDD

Cython.

agreed, this is shitty java. Would never pass CR at my job

im new to programming,
how come declaring a public abstract in an interface is bad?

docs.oracle.com/javase/tutorial/java/IandI/abstract.html

"Note: Methods in an interface (see the Interfaces section) that are not declared as default or static are implicitly abstract, so the abstract modifier is not used with interface methods. (It can be used, but it is unnecessary.)"

Ah thanks.
I also kind of don't understand the reference comparison, but I do understand the boolean comparison one

Reference comparison would be using the comparator operators != in this case, when with a string you should use .equals()

>no closures
>can't overload operators
>poor async constructs
>lack of good functional constructs (I don't like streams api)
>compiling can be slow

Though I'd say I like Java a lot because of the ecosystem. It has some of the best dependency management, mature and vast open source libraries and frameworks, amazing testability, great documentation, and some of the best IDEs. If you really need something different you can even use one of the many jvm languages like Scala, Kotlin, and clojure.

Every language has its flaws. The syntax and special features of languages don't matter as much as the ecosystem when it comes to actually getting stuff done.

ohhh
thanks for entertaining my dumbassery

That's not necessary when you're comparing it to null. I'd say it's even unconventional to use .equals in this case.

>no closures
functional interfaces
>i dont like streams api
are you too stupid for it?
>compiling can be slow
not sure how true this is but gradle can make compiling faster

It's definitely useful though

yes, lisp is clean.

t.bigInt.add(obigInt).multiply(bigInt).suckDick(abigInt).apply(you);

>implying this is hard to read

>What's the quintessential modern language syntax?
Something without for loops because it's 2018 and no one should use for loops because I read on Reddit and HackerNews that loops are code smell

(I'm being ironic)

Java is being extended to this day
Java is getting better
Java is fast, web applets were bloated but the JVM is fast, C and C++ levels fast, it just takes a some milliseconds to start
JVM isn't the horrible bloated hack that electron is and it is cross platform
Java has among the best if not the best, most comprehensive tooling in any language
JVM is battle tested, proven and supports many other interesting languages that take advantage of the many Java cross platform packages
JVM is getting better and soon it will support native binaries
Java util is better (more sane, easy to use, consistent api) than STL
Java has cross platform graphics in the main distribution, still the best way to deploy an application across multiple targets with minimal testing and developers
There is always great demand for Java developers
Java is open source and free software, even FSF is happy

>the absolute state of java haters
Do you even pointers?

the >point is that overloaded operators are useful

Why use a clean syntax such as str1 == str2
Just use str1.equals(str2.toString)

keked,fucking hate those cheap shitty programmers

>overload something as basic as equality
No
In fact just because you were ready to overload equality is a good argument against any kind of operator overloading

>he didn't understand I was talking about pointers
Do you even C?

Yes
String comparison isn't a trivial operation and the programmer should be aware of the cost
Also comparing pointer address is VERY useful too
If you overload equality how I'm going to compare pointer address??
Java was right in not supporting operator overloading just to keep brainlets from messing up with the programs

Java:
>pointers are unhealthy, let's not expose programmers to it
and
>What? You wanted to test these objects for equality? Fuck that, I'm comparing pointers.
wherefore

>NullPointerException

you are stupid

>I don't understand pointers: the post
Java is exposing pointers, it requires the programmer to understand them, it just doesn't support pointer arithmetic and offers some nice conventions to make their use easier without making copies
Coupled with the automatic memory management and garbage collection these choices make perfect sense and in a way it's a continuation of the tried and tested C practice

KEK it is so funny seeing pajeets defending java so hard.
>it is unhealthy
>who needs this anyways?
>it is actually very useful
>what is x library
>n-nobody uses this
>i-it doesn't matter
>all that nitpicking

Attached: 9445471c4ec6828a400d7f50b7c95a6b.png (154x200, 51K)

>If you overload equality how I'm going to compare pointer address??
Ruby:
a.__id__ == b.__id__

but what is the use of this operation in a OOP lang

gimped generics (type erasure)
no unsigned types
arrays limited to ~2.15 billion elements

you cant check if a LinkedList is circular without being able to check pointer address

>gimped generics (type erasure)
I like that
It reminds me of generic structures in C with void *
I prefer it than abusing the preprocessor with templates where you are not even sure what is being compiled and linked as the compile times get longer and longer
Type erasure shows the pragmatic philosophy of Java which I appreciate
>what are our programmers do?
>what is the C practice/tradition?
>is it useful?
>then that's what we are going to do
I feel like Java is closer to C while C++ is a frankenstein preprocessor monster