I've noticed in the short time I've been reading this board that there's a lot of java bashing, so I was wondering why people actually think it is so bad. I'm no java fan, but I've used it for some stuff before and it didn't seem terrible to me. An argument used to be that it runs slow as a guro-fied loli, but they've improved a lot in that aspect.
Please give good reasons, rather than stuff like "it's for certified professional consultants" or whatever you guys say.
Name:
Anonymous2006-04-24 21:09
>>62 >>66
Just to clarify, I'm >>61 and I'm not a java fanboy. But using acronyms like KISS is still fucking gay.
Also, my question about generics was not meant to imply that java is awesome because it has generics and no one else does. It was just a question. Because I actually didn't know.
Name:
Anonymous2006-04-25 3:08
But using acronyms like KISS is still fucking gay.
It's a classic engineering principle.
Name:
Anonymous2006-04-25 4:14
>>81
Oh, well then, other languages have generics but most modern (and some good old) languages don't even need them since they support duck-typing, polymorphism and overloaded operators. Take Python for example. When you define a function like f = lambda x, y: x < y (returns whether x is less than y), x and y can be any type when called, even different types, as long as they define the less-than operator. This works with builtin types like integers, floats or strings, as well as any custom class you create. There's no such thing as templates, although your code can dynamically create more code or modify existing classes, objects, hierarchies, etc. if you need.
Name:
Anonymous2006-04-25 15:35
OCaml beats the shit out of Java any day.
Name:
Anonymous2006-04-25 19:14
>>84
Well my good sir, that's not saying much of OCaml. I'm sure it has better things to shine for.
Name:
Anonymous2006-04-26 9:24
OCaml beats the shit out of C++ any day too.
Name:
Anonymous2006-04-26 9:34
>>86
Well my good sir, that's not saying much of OCaml. I'm sure it has better things to shine for.
Name:
Anonymous2006-04-26 9:41
Gentlemen, I am certain that all members of our revered society here can solemnly agree that everything is indeed better than Java.
The intellectuals among us prefer the theoretical purity of languages like Lisp, Ocaml, Haskell, and the ilk, while those who are of a more pragmatic or playful nature tend towards Python, Ruby, C, and perhaps even Perl.
Well, except for sir de Sade over there, but we all know he has strange taste.
Name:
Anonymous2006-04-26 21:13
>>82
It's not the concept that's gay, it's the acronym. What kind of people go around saying that anyway?
"Keep it thimple thilly!"
Name:
Anonymous2006-04-26 21:48
Haskell is not theoretically pure.
Name:
Anonymous2006-04-26 21:55
Neither is Ocaml, but both are a major step up from The Rest(TM).
Languages that are truly theoretically pure are rather boring affairs. Languages that are actually used for something need to be a bit more pragmatic.
Name:
Anonymous2006-04-26 23:47
ocaml Obj.magic lol
Name:
Anonymous2006-04-28 3:14
Java is bad because it's slow. How come it's slow? It uses byte code. Meaning, you have to basically "compile" the program every time you run the thing. Don't believe me? Go play Lineage II on L2J, and see how efficient it is. If Java was so great, databases and servers would be running off the thing. But of course, programmers are smart, so they use the stuff that is known to work. C++, C, Assembly, etc. AKA the real languages.
Name:
Anonymous2006-04-28 3:19
>>93
no No NO. Java can be slow, sure, but the real reason it sucks is that it makes the programmer slow. The whole point of using a higher level language is to make it easier to write programs; Java makes it harder.
Name:
Anonymous2006-04-28 3:32
Java is only hard because of 1 thing) OOP. The very fact you made that point means you don't know programming. OOP is made so that things are object oriented. In design, when you use objects, it's easier to program things and reuse. The point of OOP is that the initial difficulty in programming pays off later. You want slow? make a C GUI program. That's right, no such thing as a GUI since you have to make one yourself. Java sucks because the way Java runs itself is slow. If you were to use port C to have what Java has, I would be using C right now.
OOP is powerfull for real world complex aplications, also the Java people is working for better integration in the windows desktop. Also don't be fooled by the VM stuff, Java has a very sophisticated VM with eficient memory management. Anyway I hate JAVA!
Name:
Anonymous2006-04-28 3:53
>>95
Don't equate Java with OOP. Java has a broken version of OOP which requires you to do extra work to do even the simplest thing; it then shoves this down your throat at the Right Way to do things.
OOP isn't for programmers as much as it is for the non-programmer idiots who programmers have to work with who always shove shit like UML down our throats.
Name:
Anonymous2006-04-28 5:36
>>97
Integration in Java-speak involves shitting a dozen ill-conceived and badly thought out parts around and trying to keep them together with puke while having to operate them all seperately.
Name:
Anonymous2006-04-28 6:38
>>101
First we have distinguish between programming lovers and programmers/software engineers. OOP is for programers/software engineers, yes, you should see a large scale project with a bunch of databases interrelated, in several diferent platforms (not an imageboard like this, something very big with diferent systems)... then UML and OOP comes to the game, obviously. But yes, that's not what I call programing, that's projecting and the programing below is done mechanicaly. So programing lovers or hackers, like more languages like Ruby, Python, Lisp, or C and ASM for a deeper operating system interaction.
>>102
Yes, and with that they will certainly add some more parts, that they have to glue with "puke", and so it continues... And that's preciselly why I don't like Java.
I live everyday with a Java fan and he is allways talking about the "glue", seriously. And now I just ignore that, because if I "touch" his "glue" then he will come with the parts and the parts are cool in a certain way, but need glue, and that's what make Java so repulsive.
Name:
Anonymous2006-04-28 7:26
Hm... This needs a list of facts:
1. High level languages are always slower, but that's a very affordable price for software used by companies and system scripts (which make up for a good portion of all the software produced) because hardware costs are much lesser than development costs.
2. Unless you're a low-level freak, higher level languages are more fun to work with because you don't waste your time dealing with strict data structures, "glue", or crap you need to support what you really want to do. Most programmers will thus like modern scripting languages (Python, Ruby, or even Perl, PHP and Lua) and functional languages (Lisp, Ocaml, Haskell, etc.) better than more anal languages like Java or C++.
3. Java's OO and data typing totally sucks, and the API is powerful but it's so overgeneralized, overgeneralized and bloated it's unusable and ugly, and it's made of fail and lose.
4. Therefore, Java is one of these slower VM languages, yet it doesn't allow you to work neither nicely nor faster, therefore it's a waste and a piece of crap.
5. On top of that, Java's garbage collector is terrible. Because of it, some things written in even higher level, duck-typing languages like Python may rival the performance of those written in Java using 5 times more lines of code and being pretty unmaintainable.
6. You can create GUI applications in C, duh. What do you think GDI, GTK, and some others work with? However, you will be more productive using a higher level language. As long as controls aren't terribly slow or fugly, it's usually acceptable, as most GUI applications are almost always waiting for the user to do something, not really running.
7. Managers suck. We already knew this, just restating.
8. UML is mostly manager stuff, they probably saw "ML" and thought it has something to do with XML, or read an overhyped article in some stupid magazine. UML is just a set of tools to represent software concepts. Sometimes you might decide to use part of it, modified or not, to think or document something, but it's not a religion, a best practice, or something so great in an on itself like managers believe.
9. Oh, and finally, save for small or embedded, today's processors are so complex a good C compiler will do a better job than an assembly guru, so unless you need to do something very special like an OS kernel, assembly is probably better left alone.
Name:
Anonymous2006-04-28 7:36
4. Therefore, Java is one of these slower VM languages, yet it doesn't allow you to work neither nicely nor faster, therefore it's a waste and a piece of crap.
QFT
Name:
Anonymous2006-04-28 8:35
>>104 Point 9 - asm is also used in video related aplications like vlc and in other aplications, but inlining with C, like it's done also in Linux kernel. Asm is also good for hacking http://www.ollydbg.de/ and in some (simple) cases asm can perform better excluding overhead.
Name:
Anonymous2006-04-29 23:45
Java is f'ing awesome.
1. Java has all the uml tools that you could want.
2. Tons of libraries and functions are available.
3. Everything has a pretty much standard form.
4. Works everywhere.
5. Can be compiled into a. bytecode b. Just In Time c. native code.
6. Easy to learn (1 caveat, takes writing a whole bunch of stuff before you can get to hello world and that turns some people off.)
7. Becoming a frickin' standard in the workplace and everywhere else.
8. Looks like C or C++ so everybody who programs in those catches on pretty quickly.
Speed wise, java is getting better. Just in time compiler makes things a bit faster. Will Java VM ever be as fast as native compiled? No. But, you can native compile java with gcj, eventually that will compile as fast to 'native code' as almost anything else.
Java is a damn good language. Programming is assembly is fun, but you don't do large projects in it. Programming in C can get to be a pain with memory problems. References are easier to program.
If you are going for all out speed, use C. No C++, just C. If you have to have the absolute best epeed, use assembly.
Java fits tons of niches and does a great job in being cross platform compatible. They made a few mistakes, true (like for instance their case-sensitivity *shiver*.) But, java is definately one of the best languages out there; it just isn't '1334'. Java bashing is a popular sport, but its silly. I'm far more productive in java than I am in C, and I don't have to worry about cross-compiler cross-platform problems.
Java is not a perfect language. But, give it time, It might just become the very best imperative language out there.
Two real concerns with the language:
1. Garbage collector = slow
I have no doubt that Sun follows a very minimalist scheme of trying to grab all the memory it can, rather than optimizing for speed. We need more options, like different vms. There are some open-source VMs out there but I haven't tested them.
2. Let me do my own memory management!
Let us turn off the frickin garbage collector and let us do our own frees. Seriously.
3. Case sensitivity annoying!
Case sensitivity is something for hungarian notation or a pretty printer to handle. Not for a programmer that has to hold down the damn shift key. That's also why I don't like languages that requires lots of %^&'s, because it is frickin hard to hit those keys. Sometimes you miss or it just slows you down alot, or even worse you have to concentrate on typing rather than coding. It's the same with the shift key, although not as bad. You have to press shift to get upper case (or use caps but that is only good for capitals right after another which java really doesn't do much) and it slows you down.
4. Tired of super huge typing requirements!
Everybody remembers ada 83. Every programmer hated it. The amount of typing required was ludicrous. The scheme for visual redundancy was enourmous. Clear code isn't worth that. Java requires such huge typing as well that I have always wondered why nobody has compared the two? Ironically, ada 2005 version is shaping up to be quite awesome, and if it actually got popular I'd probably switch to it, but nevertheless java takes quite a bit of typing.
5. They should have made a native compiler first and they should make the JIT compiler perfect.
Java has a rep for being slow? Why? Because everybody thinks of java as in terms of being interpreted. Byte code is a little faster than pure interpreted. Big deal. It's still way slower than native code. The JIT compiler is a neat idea, although it takes longer load times, but they need to get both working perfectly. Basically, if I had a choice, I'd JIT everything rather than using the VM, unless the program was really small and didn't use any resources at all.
Name:
Anonymous2006-04-30 0:29
>>107 "1. Java has all the uml tools that you could want."
huh? waht is a uml tool?
Oh, wow, I always wanted to use UML tools. All this time that is exactly what I was missing.
Also, I'd love to know how many languages >>107 has ever programmed something non-trivial in. That post is so fanboy is reeks.
Name:
Anonymous2006-04-30 5:31
>>107 1. Java has all the uml tools that you could want.
There are hundreds of languages you can apply UML design to. Incidentally, UML is not that great if it becomes a religion. It's usually just a manager thing. You take parts of UML and use them if you think they fit the job, that's how to use it.
2. Tons of libraries and functions are available.
Which are so overgeneralized and poorly engineered you want to redo them by hand instead of using them because you spend the same time doing it by hand or reading the docs through six fucking levels of insane inheritance.
3. Everything has a pretty much standard form.
Yes, but what happens when you hate the standard form?
4. Works everywhere.
There are subtle differences to the JVM that fuck up things every now and then. Higher level scripted languages are usually more portable.
5. Can be compiled into a. bytecode b. Just In Time c. native code.
This is not a functional advantage. I don't care how it's compiled, I just care about its performance. And being compiled that way means you get no eval() function, sandboxing, and other neat stuff.
6. Easy to learn
You actually mean easy to become a "Java professional" that comes up with "enterprise solutions"; read "idiot" and "shitty software made of a surprising number of misconceptions and failures".
7. Becoming a frickin' standard in the workplace and everywhere else.
Yes, because it's ENTERPRISE.
8. Looks like C or C++ so everybody who programs in those catches on pretty quickly.
Yes, because if I know how to use for, if, while, and the operators I know Java.
Will Java VM ever be as fast as native compiled? No.
It's not the speed what I'm usually complaining about.
But, you can native compile java with gcj, eventually that will compile as fast to 'native code' as almost anything else.
GCJ is actually slower.
Java is a damn good language.
Ever learnt Python or Ruby?
Programming is assembly is fun, but you don't do large projects in it.
Operating systems are a large enough project for you? They have to use parts of assembly. Oh and nobody is sane enough to use it when it's not strictly necessary.
Programming in C can get to be a pain with memory problems.
Ever heard of Boehm?
If you are going for all out speed, use C. No C++, just C.
I agree with this.
Java fits tons of niches and does a great job in being cross platform compatible.
Like Java invented portability.
I'm far more productive in java than I am in C, and I don't have to worry about cross-compiler cross-platform problems.
And if you learnt a real high level language like Python, you'd be far more productive in it than you are in Java and discover so many new things you don't know.
It might just become the very best imperative language out there.
Ha ha, um... no, because there already are better options.
1. Garbage collector = slow
Actually, it's more like "Java's garbage collector = slow".
2. Let me do my own memory management!
Are you serious?
3. Case sensitivity annoying!
Well, I mostly agree with you here; I usually prefer case preserving, case insenstive stuff, especially for files and typing commands interactively. However, I don't actually make any use of it when programming because I stick to strict naming standards, that's why I don't care much about case sensitivity in programming langauges.
4. Tired of super huge typing requirements!
Java requires you to type much because its API is poorly designed. Consider the amount of shit you have to pull out of your ass to just OPEN A FUCKING FILE DAMMIT!
5. They should have made a native compiler first and they should make the JIT compiler perfect.
I agree, but this is not the biggest deal.
>>110 Oh, wow, I always wanted to use UML tools. All this time that is exactly what I was missing.
Lol
Name:
Anonymous2006-04-30 6:23
>>111
| Yes, but what happens when you hate the standard form?
Or even better, incompatible between implementations
| Yes, because it's ENTERPRISE.
ENTERPRISEY
>>certified fanboy
|Java has a rep for being slow? Why? Because everybody thinks of java as in terms of being interpreted.
No, because it IS fucking slow
It should be noted that every point >>107 made has already been flogged, diseccted and ground into dust as BS in the 106 posts preceding it.
Name:
Anonymous2006-04-30 20:25
Here's fanboy. Jake is the quake 2 engine running in java, hell, with enough work you could probably get it into an applet. Runs pretty darn fast for me. Running on an 850 Mhz processor. Runs on linux just fine. I assume it can run on windows, and maybe even mac!
Uses the insane JNI stuff and all those crazy features that are supposed to slow down java runtime even more. Yet, somehow, I am able to run it fullscreen and get a good framerate.
Well, I don't know if I could get a 'quake 3' in java running on this computer, as the c++ version would just barely work at 20dfps, but jeez, that's pretty considering how 'slow' java is!
Although, I know that quake 2 written in python or perl or smalltalk would run so much faster and I would be able to use javaws and jnlp stuff with it.
Yes, jogl, even fastjogl is doomed to failure because java has no ability to run anything and is as slow as the jolly green giant. If you run something in java it is automatically slow and seeing it run 3D games is the work of the hypno-gnome-fox-beasts. Yes, Java is the suckiest language ever and really even though it 'seems' to be useful, that is just a massive illusion caused by Sun(Satan) Microsystems and its army of magical gnome-fox-beasts who use advanced hypnotic mind control to masterbate java advocates so that they support the Java(tm) empire. I know this because there are only illogical reasons for liking java whatsoever, and anyone who comes up with a logical reason for liking java uses the 'backroom' for anal sex with the hypno-gnome-fox-beasts.
What other reasons would anybody have for supporting an OOP language of portability and C-like structure?
Name:
Anonymous2006-04-30 20:29
Hypno-gnome-fox-beasts are deceptively attractive.
Name:
Anonymous2006-04-30 21:02
>>115
Uh, we're all (or at least most of us are) aware that Java performs well at long-running, non-realtime tasks. That's not why we hate it.
Here's what it sucks at: short-running tasks, realtime tasks, memory-hungry tasks, class semantics, and the absolute shittiest library ever seen. The last two points are why nobody who has experience in a variety of languages wants to touch Java.
If I want performance, there are better choices than Java.
Name:
Anonymous2006-04-30 21:27
Absolutely true.
But, isn't a 3D engine a realtime task?
I program in python, perl (limited knowledge), C (linux kernel and wine), C++, ada(95 and 2005), and lisp(limited knowledge).
When I was teaching myself data structures, I did it in java. Why? Because there were lots of good java books for it, and it was much easier to learn with references rather than having to worry about memory management all over the place.
Oh and regarding that 'let me do my own memory management comment' I mentioned that because I'm of the opinion that garbage collectors will usually be slower than manual memory management done with loving care. Although, the more I think about it, that's probably too low level to allow for java to do, within its security boundaries.
Name:
Anonymous2006-04-30 21:29
Oh, and I also did intel assembly, that silly gnu/AT&T variant and the err normal stuff.
And strangely enough, I always enjoyed debugging (and I like C far more than C++,) but for some reason I've always liked ada and java.
Name:
Anonymous2006-04-30 21:33
Which reminds me, why doesn't somebody do a compiler for all of these languages like python to compile to java bytecode. I won't have the faintest idea how to do it, but it would be totally awesome. I know that JGNAT does that for ada, but that's about the only thing I know that does.