HOLY SHIT JAVA IS FUCKING RETARDED

>no multiple inheritance because we gotta defend pajeet from himself
>bool type is called boolean because fuck you type more
>String type is written with a big S because fuck consistency
>variable types named retardedly like short , long , byte instead of int8 , int16 , int32...
(yes c and c++ started this retarded naming but they already fixed it in 1999.)
>no 128bit floating point type.(even ansi c has it)
>characters are stored with the most retarded utf-16 encoding.worst of both worlds
>no unsigned types because it would confuse pajeet
>no const,i literally cant make my variable read-only. no, using private is not the same.

>reading in one line of input from the user:

import java.util.scanner;

Scanner read = new Scanner();
String(yes strings start with a big S) nigger = read.input();

>generics are implemented in a retarded way
>lambas are implemented in a retarded way
>name of the program has to exactly match the class name

Other urls found in this thread:

docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html
docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4.7
cr.openjdk.java.net/~dlsmith/values.html
en.wikipedia.org/wiki/Java_Community_Process
twitter.com/SFWRedditVideos

all those flaws and it is still better than C#

>>bool type is called boolean because fuck you type more
>>variable types named retardedly like short
>>String type
>>no const
even your code sample is wrong
sorry you didn't pass Intro to Programming

no namespaces either.

why is it wrong my indian friend?

>no multiple inheritance because we gotta defend pajeet from himself
Multiple inheritance is not a common feature of most object oriented languages.

>bool type is called boolean because fuck you type more
A valid criticism, but it's not that big a deal.

>String type is written with a big S because fuck consistency
Java naming convention has classes begin with capital letters. String is not a primitive.

>variable types named retardedly like short , long , byte instead of int8 , int16 , int32...
>(yes c and c++ started this retarded naming but they already fixed it in 1999.)
Java was made before 1999. C's fixed width types were necessary because short, int, long, and the like had no guarantees over exact bit width.

>no 128bit floating point type.(even ansi c has it)
Technically ANSI C does not have a 128 bit floating point type. Are you referring to long double? The only guarantees there is that it's >= sizeof(double). On some platforms it's 80 bits.

>characters are stored with the most retarded utf-16 encoding.worst of both worlds
>no unsigned types because it would confuse pajeet
Finally, legitimate criticisms.

>no const,i literally cant make my variable read-only. no, using private is not the same.
final

>generics are implemented in a retarded way
>lambas are implemented in a retarded way
You want to expand on that?

>name of the program has to exactly match the class name
Make a goddamn jar.

how about you read the documentation next time?

>Strings are primitives
>final doesn't exist
You are worse than pajoot

>characters are stored with the most retarded utf-16 encoding.worst of both worlds
It's a good trade-off. If you don't want it, use something else. Nobody's forcing you to use the standard character implementation, you can make your own.

I made my 8-bit strings once when I was only dealing with latin-1 text and the standard strings took up too much memory. But don't go off doing premature optimization.

>>no multiple inheritance because we gotta defend pajeet from himself
inheritance is trash, all new modern languages don't have it because they realize how easy it is to break code when changing the top class.
>bool type is called boolean because fuck you type more
>String type is written with a big S because fuck consistency
java is not 100% object, int, char,boolean are primitive types and String is a non-mutable object
>variable types named retardedly like short , long , byte instead of int8 , int16 , int32...
fair point, I don't know what plan they have on the subject for java 10/11
>no 128bit floating point type.(even ansi c has it)
wip for java 10, don't know if it will make it.
>no unsigned types because it would confuse pajeet
the jvm is taking care of it
>no const,i literally cant make my variable read-only. no, using private is not the same.
const has no reason to exist as in most cases your fields are private final and you can't manage memory, const are great to prevent pointers dereferencing.
>reading in one line of input from the user:
It's because strings are objects and there is no reason to bloat the stack when you should store it in the heap, the jvm will do the register job for you if you need fast access (cf register keyword in C, the jvm does the same behavior)
>generics are implemented in a retarded way
>lambas are implemented in a retarded way
yep it's because they are waiting for the scala/C++/go/rust guys to beta test features for them and no, it's not a joke.

The only somewhat valid point is lambdas, the rest is crap

>having to reimplement string libraries
So this is the power java

>multiple inherits
Interfaces with default methods. Implement as many as you want.

>boolean = bool
Its being more verbose, but I agree.

>string is capitalized
Its because its a class. The naming standard for all classes is not going to be dropped because other languages treat strings as primitives.

>primitive name conventions
You literally just admitted java is not the originator of the problem you're bitching about.

>no 128bit floats
docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html - This is a shit solution but I don't think 128-bit floats are even used that commonly. I can't think of a non-scientific environment to use them in.

>chars are utf-16's
Thats literally a lie.
docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4.7

>no const
Its called final in java.

>reading one line of user input is object oriented
Java was designed to be object oriented, if you expect java to behave like c you're on the spectrum.

>generics are retarded
>lambdas are retarded
Please do elaborate.

>name of the program has to match the class name
FaggotOP.class contains the class file "FaggotOP"
Wow who woulda guessed that. Its almost like thats how it was designed.

I wasn't using Java. My point is all languages with strings have made some tradeoff and sometimes you have to do it a little differently.

This is an incomplete list...

>String type is written with a big S because fuck consistency
This actually is very consistent. String is a class, the others are primatives. Good luck calling .equals(...) on an int. (Which you can do in C#, because fuck consistency)

>no const,I literally can't make my variable read-only
The keyword you're looking for here is "final".

>generics are implemented in a retarded way
What?

>>String type is written with a big S because fuck consistency
Because it's a class instance not a primitive, you dumb shit
Otherwise yes you are correct

The biggest crime Java is guilty of is no unified type system. Fucking retarded ""primitives"" shit that you can't even expand upon.
>Can't use primitives in generics
>Can't pass primitives by reference without doing some retarded java-tier shit like single cell array
>Can't create new primitives
>Can't inherit primitives
India was a mistake. It's nothing but trash.

cr.openjdk.java.net/~dlsmith/values.html

This^
kek

>the SPECIFICATION for fixing this mess is only written 3 months ago
the absolute STATE of java holy shit
and that's only a fraction of what's wrong with java

You should take some easy classes to pad your results and transfer to a better school like Kolkata Polytechnic

that's objectively wrong though

it's not really "a mess", but a rather inessential convenience feature. the difference with java is that they let all the hipster languages do all sorts of crazy shit and then only implement something after it has really proven itself to be useful. it's a serious language focused on long-term, and not on luring newbies with shiny features.
because of that java will still be around in 30 years, outliving all kinds of meme fad languages.

Java was the language that powered runescape, it was that poweful.

>we gotta defend pajeet from himself

You mean Rust?

Rust was made by Mozilla so they could diversity hire Tyrone who isn't good enough for C++.

/thread

>inessential convenience feature
it's not "inessential" when the language forces you to write dirty unmaintainable hacks to do something that's trivial in simpler languages. Java does that so Rajmesh can't shoot himself in his dirty foot because he can't grasp the concept of value types.

haha pajeet lmao :-DDD

>Indians come out of the woodwork once java is mentioned
like clockwork

at least try to make it a little more subtle next time

I'm actually european, but whatever makes you feel good dude. I can do a decent indian accent so we can pretend you're right

op btfo
/thread

>no multiple inheritance because we gotta defend pajeet from himself
Multiple inheritance causes multiple issues and thus is not a feature of most OOP languages.

>bool type is called boolean because fuck you type more
Oh boy, additional three letters to a keyword that you very rarely need to explictly type.

>String type is written with a big S because fuck consistency
String is a class, not a primitive

>variable types named retardedly like short , long , byte instead of int8 , int16 , int32...
(yes c and c++ started this retarded naming but they already fixed it in 1999.)
Short, int, long etc. is the superior format, C had to introduce explict sizing because they fucked up and didn't define default sizes for those types.

>no 128bit floating point type.(even ansi c has it)

>characters are stored with the most retarded utf-16 encoding.worst of both worlds
Well at least Java 9 will use utf-8 if more bits are not neccessary.

>no unsigned types because it would confuse pajeet
This is a valid point but it doesn't matter in 99% of use cases.

>no const,i literally cant make my variable read-only. no, using private is not the same.
Final. Doesn't fully work for objects but const has its flaws as well.

>reading in one line of input from the user:
>import java.util.scanner;
>Scanner read = new Scanner();
>String(yes strings start with a big S) nigger = read.input();
Scanner doesn't have no-arg constructor nor a input() method.

>generics are implemented in a retarded way
>lambas are implemented in a retarded way
Java was first introduced in 90's so naturally it can't adapt to modern programming schemes as well as more modern languages. C has issues with generics as well.

>name of the program has to exactly match the class name
Java is designed for OOP and thus everything must be a class.

>>no multiple inheritance because we gotta defend pajeet from himself
There used to be this way and it was perfect. Recently some lazy mongrel made it possible for interfaces to contain implementations so as to not to have to rewrite the entire java.util package. Thus sadly in Java 8 there is effectively multiple inheritance and the diamond problem.

>>bool type is called boolean because fuck you type more
Its OK. Java is all about typing more.

>>String type is written with a big S because fuck consistency
It is an object and not a primitive type. It is consistent because class names all start by uppercase.

>>variable types named retardedly like short , long , byte instead of int8 , int16 , int32...
This is a good thing.

>(yes c and c++ started this retarded naming but they already fixed it in 1999.)
Old types are still around.

>>no 128bit floating point type.(even ansi c has it)
You don't need that abomination.

>>characters are stored with the most retarded utf-16 encoding.worst of both worlds
Better than C and C++.

>>no unsigned types because it would confuse pajeet
You don't need unsigneds.

>>no const,i literally cant make my variable read-only. no, using private is not the same.
There is final. But it is true that it doesn't make your objects immutable.

I think they've added something like namespaces in Java 9

Oh boy they added way more than that. To the point Java 9 is the new Python 3.

Yeah, the biggest mistake Java made was having primitives instead of making every type a class, like Smalltalk.

Every other criticism of Java is pointless nitpicking.

>every type a class
Java classes are too bloated for that.

why would you want namespaces over packages?
where are all the files in the com.op.faggot.retarded namespace? always in the directory /com/op/faggot/retarded

>Java made was having primitives instead of making every type a class
there are wrapper classes for every primitive type (except for arrays)

Pajeet, my friend. You need to go back to week one and properly read the lecture slides. This time try to actually learn something and soon enough you will actually appreciate Java as a programming language. It takes effort Pajeet, but I promise it will be worth it.

So how's college going user?

Every Java hate thread is the same. 90% of it is silly things that make no real difference. There are valid criticisms of Java. OP mentions UTF-16 strings and lack of unsigned types as a couple examples. The rest is superficial nonsense. Yet that superficial crap is what most Java haters focus on. I work with the language daily. I know which parts of it cause me headaches and which parts really don't matter. If someone has to resort to "String begins with a capital S" as a criticism, then holy fuck, Java must be one of the greatest god damn languages around.

Most of these posts are just parroting Linus Torvalds in an attempt to seem intelligent. It's fashionable to hate on Java. Go look at the types of complaints that Joshua Bloch makes about Java and compare them to every "hurr, Java sux" thread. You will see very little overlap. The people who know what ACTUALLY sucks about Java get drowned out by middle class college kids who think parroting cat-v makes them a fucking genius. The whole "Java is retarded" mantra is the "We want schezwan sauce" of the programming world.

it's ironic that people don't admit that c# is basically java done right just because "m-muh evil microsoft" when java is in the hands of a company that has one of the most ruthless CEO ever seen in the history of the tech industry (i think he's not CEO anymore but he's still there).

>>String type is written with a big S because fuck consistency
String is an object, so that is consistent.

>trying to be reasonable on Sup Forums
not worth it m8

java is mostly in the hands of community
en.wikipedia.org/wiki/Java_Community_Process
while it's true that oracle has a lot of say, it can't in the slightest be compared to how microsoft owns .net for example (they have total exclusivity when it comes to changing c#, and they completely own all usable .net implementations)

Literally every complaint is fucking tryhard "i wanna fit in with Sup Forums" tier

The best part is that EVERYTHING in Java is about classes, and yet they don't provide a simple syntax. Every other OOP language gives you a one-liner syntax which gives you a getter/setter or even both. Only Java forces you to write this stupid shit..

Ruby
attr_accessor :i, :j, :k


C#
public int i { get;set;}
public int j { get;set;}
public int k { get;set;}

Java
public getI(){
return this.i;
}
public setI(int i){
this.i = i;
}
public getJ(){
return this.j;
}
public setJ(int j){
this.j = j;
}
public getK(){
return this.k;
}
public setK(int k){
this.k = k;
}

>String is a class, the others are primitives.

But they really aren't.
Because the is "int" and "Integer".

Yo dawg, I put an int in your Integer, so you can autobox your int while..

Fuck yes, do you realize, these are actually monads we are talking about? LMAO.


It's also remarkable that you can have overloaded methods which do something different and int and Integer, so "myMethod(i)" and "myMethod((int)i)" do different things.


Consistency, fuck yeah!
B-)

finally, a poster with some sense that doesn't just try to fit in

>Only Java forces you to write this stupid shit..
That's how it was done in C++, which was one of the most popular languages around when Java came out.
There is no problem with it though because every decent Java IDE has a menu to get them written for you. But college retards who write in notepad as part of their 6 month subject will never know about this.

Now if you want something more modern and less verbose for the JVM you can use Kotlin.

Java is crafted for business and OOP is the rule. FP stuff is merely syntax sugar and some "secure" measures against mutability.

Enjoy being a NEET.
130k/yr Java here :)

130k
SV? Startup, banking?

Remove yourself from that keyboard, mr. Dunning Kruger.

The job requires that I code in Java, so what's the best program to use? They have JCreator installed in work and it's trash

I too used to consider verbose in Java a problem until I discovered Eclipse around 4 years ago.

Seriously, unless you write code on a simple text editor, this is not a real issue.

>final
You've got to be kidding

>>generics are implemented in a retarded way
>>lambas are implemented in a retarded way
>You want to expand on that?
Don't play dumb. Generics and lambdas are utterly fucked by autoboxing and OO.