Does anyone have a legitimate complaint about pic related that isn't elitism or "muh virtual machine"?

Does anyone have a legitimate complaint about pic related that isn't elitism or "muh virtual machine"?

no, it's perfect. i'm glad it's fucking everywhere
sage because fuck your blatant advertising

We had this thread yesterday.

system.out.println("arent this and boiler plate good enough reasons")

You forgot to make an object that implements println.
0/10

That's a plus onii-chan

No greater misery than being a full time java developer.

Garbage Collection

So what's the issue?

>it's super easy
>tons of libraries
>good documentation
>widely used so you can easily found discussions regarding any problem
>actually get paid well to write it
Oracle consultant ftw, I guess

I understand that you're confused Rajesh, Java is not as trivial as it might seem. In fact, the method void println(), and its varius overloads, is already implemented in the class java.io.PrintStream, which is the type of the static field out in the class java.lang.System. Thus, the above code snippet, although it might seem wrong, is actually correct even without a new imllementation of the method println(), and is perfectly usable as is in any part of a Java program.

you forgot the semicolon

>imllementation
Fuck mobile. But you get what I'm saying. Check the docs if you want to know more, they're incredible.

;

>need to import a class to get a string to run rather than just type it correctly in the first place
How is this a good thing?

you dont need to import a class for using syso

is right. are you still with us?
All classes in the java.lang package are imported by default. Thus you do not need to import java.lang.*; to use them without fully qualified names.
Consider the System.out.println() method we've been using above.
System is really the java.lang.System class. This class has a public static field called out which is an instance of the java.io.PrintStream class. So when you write System.out.println(), you're really calling the println() method of the out field of the java.lang.System class.

the jvm is good
that there are over 9000 versions of the jvm is not so good

It runs like shit.

Ah I sorta get it...to be fair, I'm still new to programming.

system.out.println("you misspelled it, you need a ';' at the end of the line otherwise it doesn't work");

competition is good

it doesn't really

Java is a really shitty language to write fizzbuzzesque stuff in. It's also really shitty for competing in codegolf or google hashcode challenges. It's shit for small stuff, I mean, who the fuck has the time to start the jvm for a helloWorld.class and shit.
But where Java is really great, is writing enterfuckingprise software, where you have to write rock solid stuff, where you have to be sure that everything works always and where you abstract the fuck out of everything so much that 58 teams in 17 countries speaking 6 different languages and composed of citizens with migration and menstruation backgrounds can work on it without fucking up royally even though they'll never know ehere their method or object will be used.

I'd rather use kotlin desu senpai

that's a good way to put it. damn....

am i being baited by that non capped s?

The language is extremely verbose and not in a way that helps readability. Just look at minimal "hello world" for examples.

There is no operator overloading so no such thing as regular types or stack allocation. primitive types are just special cases (C# luckily solves this).

It takes enormous frameworks to do anything, and they are largely over engineered, so they are a pain to work with, yet never quite do what they are supposed to.

There are no real generics. The compiler just plays copy paste, with casting. (C# solves this as well.)


C# is a far better Java, but that still isn't saying much.

>he doesn't have alias system="System" in his .javarc

no thats not misspelling, thats just missing a ; and id get an error about it faster if i was writing C/C++/Rust

As an Oracle DBA I want to kill myself every single day

Then fucking do it you cuck.

I have no idea what that means but I guess that means you know Java.

I need your help, I have an assignment where I have to make a program that clicks a window on the screen. But the window will not accept clicks unless it's made by a human. Will java.awt.robot bypass this or will the window know a human didn't make the click?

>C#

>Thinking that templates aren't copy paste in C#
>Thinking that primitive types are special cases in Java

If it wasn't for Winforms C# would be absolutely deprecated. Now go kiss Microsoft's ass.

Oracle is involved.

My only complaint would be its not as fast as C. I tried to do a Wiegand reader on a pi using java and it didn't work due to slowness. But then again C is pretty fucking fast.

Are you for real?

>C# templates are copy paste.
They aren't. Java literally copy pastes in casts. C# compiles new versions of the class for each type used.

>primitive types aren't special cases
How do I make one then? I would really like a Vector with addition, multiplication, assignment, etc.

>that isn't elitism
Let me guess, someone shat on it and that's the only way you know how to respond

>Does anyone have a legitimate complaint about pic related that isn't elitism or "muh virtual machine"?
The essential issue is that java is well-designed as a language in which low-skilled people can effectively write working code reasonably quickly and reliably, at the cost of making it very difficult for high-skilled people to write GOOD code. It is a language that drags everything down to the level of the lowest common denominator. There are many things that a high-skilled programmer could make with a much higher level of quality in most other languages than in java, because java stops them from doing anything powerful that low-skilled programmers might not understand. Not just on the topic of performance (which is a reasonable enough tradeoff), but also in matters like reliability, maintainability, readability, and flexibility.

There is great value in such a language. If as a business you want to make okay-tier software that can be effectively maintained by low-skilled replaceable workers, java is a very useful business-level tool for that purpose.

For a high-skilled programmer though, programming in java is like using training wheels that never allow you to go faster than 10km/h in case you might hurt yourself. It's a liability if you ever want to make anything good, or just out of the ordinary.

Yes I am for real, please help.

Please help, are programs capable of detecting whatever or not a click made with java.awt.robot is made by a human or machine?

Yes

What kind of bot program are you trying to write?
"Assignment" my ass

>it's super easy

90% of mate drop at Interfaces

The JVM is sick. But, Java itself has a lot of little issues here and there.

A. Boilerplate - I don't want to make a getter and/or setter for every fucking visible field. Kotlin and C# handle this much better by allowing you to declare them once they are necessary and automagically retrofit the entire code base.

A)1. No type inference a la Kotlin

B. Type erasure in generics....

C. Javadoc is often overly verbose compared to other alternatives. Kotlin's KDoc is much welcomed with markdown-style links and shit

D. It's old. This positives of this totally outweigh the downsides. But, there is a lot of legacy shit that you're just absolutely not supposed to use, shit that makes little sense, and the age shapes a lot of the core functionality of the language (See: type erased generics)

D)1. Do you know what Integer.getInteger("69") does? Are you sure?

D)2. new BigDecimal(0.333333333); is also a funny meme. Like Integer.getInteger(), this is confusing for many by default. As you're instantiating it by creating it with a double, you've immediately fucked up; you need to instantiate it with a string to not end up with the same rounding issues you'd have by just using a double (new BigDecimal("0.333333333");)

E. Unreasonable defaults; why is everything mutable?


Most other things are slowly getting resolved. But, they are taking a while. E.g., Jigsaw was supposed to launch with like Java 7 but here we are on Java 9 and it only just finally went live.

Lambdas are another thing that took for-fucking-ever

The currency api JSR - so people don't have to use joda money or reinvent the wheel - was supposed to come in JDK 9 but now it has been pushed back so gl see u in 3+ years. Until then, people will be making the same damn retarded mistakes like using floats for their chedda or the less retarded people will still probably being making other easy dumbass-decisions (See: D)2. - big decimal instantiation).

Forgot to add. Most complaints are minor. Java is dope and anyone who disagrees is probably some whiny loser.

The reality is, it is a fast, stable, and robust language with a large ecosystem that is relatively easy to be productive in.

You could argue the community has problems. One of the longest running java-hate memes is this particular class from Spring: static.springsource.org/spring/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html

But, you don't have to write Java code like that. It is a community issue. When I see Microsoft guys, they often write their JS like they write their C# (the same way you typically see people write Java) - which just goes to show you that you can fuck just about any tool

No type inference. It's fucking 2017 there's no reason you should have to declare types of local variables.

Classes fucking everywhere.

dead ass

>Kotlin
>functions denoted by 'fun' keyword
fucking dropped.

its fun lol ha ha ha

no for real its a cool language

adding on, operator overloading would be cool

C#/Kotlin extension functions are also pretty sweet

Data classes, please! Overloading equals and hashcode 24/7 is not fun

And, again, on verbosity, lack of named parameters sucks. Having to make a bunch of withers for your immutable objects sucks - I'm on about shit like groundItem.withPosition(position), groundItem.withId(995), groundItem.withAmount(69000) sucks when, in Kotlin, you can just do groundItem.copy(amount = 69000), groundItem.copy(id = 995), etc boom done

On easy mistakes, another naming issue are the "unmodifiable" collections. They aren't exactly a lie. But, they kind of are. While you cannot directly make changes to your unmodifiable list, if your unmodifiable collection is a wrapper around a mutable collection, someone else can totally just modify the mutable collection and then everyone gets fucked since it wraps the mutable reference instead of copying it. I prefer Guava's immutable collections.

Oh, yeah, and the way Java's handling of nulls - or lack thereof - is pretty gay. See: Kotlin or Ceylon for decent implementations of null safety on the JVM

>adding on, operator overloading would be cool

fuck no. the fact you can add two strings is already java haram in my opinion.

Poo Poo = new Poo("in the loo")

Java sucks. Tons of legacy bullshit.

Kotlin and Ceylon is the way to go: Clean, modern, JS and native generation getting better...

Wrong, it's
System.out.println("Hello, world!");

java.lang.DesignatedShittingException

slow af development time, frameworks are difficult to debug in because of the amount of abstraction...

there are much leaner tools nowadays like phoenix

fixed for you.

Poo poo = new Poo("in the loo");

Basically this. Good luck with python when the average "engineer" is a literal piece of shit.

inner classes are retarded