Whats wrong with java?

Started by
46 comments, last by Washu 12 years, 1 month ago

And in the mainstream of OS development or embedded programming, you'll rarely find C++ *either*. It's considered too bloated and error-prone for use in the Linux kernel, and embedded platforms tend to lack a decent C++ compiler.

Well, lets be honest here: It's not used in linux because Linus Torvalds would rather not have to learn anything new. It was used rather successfully in BeOS, and no one knows what Windows is written in, but I would be surprised if large chunks of it weren't C++.

Also, C# was used in the Singularity project

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.

Advertisement
Regarding the runtime sizes - the size of a runtime shouldn't really have much bearing on the quality of a language anyway. I should've prefaced that better.

Also, to pedantically correct myself, technically a C# program doesn't need the .NET runtime, Java programs don't need the JRE and C++ programs don't need the MSVC runtimes wink.png
Keep in mind this is a borderline language bashing thread, so a healthy mix of farce and jest should be expected.
This section is a bit misleading too
I'd prefer "opinionated" cool.png
Yes you can write an OS in C# or a massive GUI in C++, but IMHO it's not the most productive approach.

It's considered too bloated and error-prone for use in the Linux kernel, and embedded platforms tend to lack a decent C++ compiler.
C++ isn't used in the Linux kernel simply because of Linus Torvalds stereotyping of C++ programmers (much in the same way the C++ programmers stereotype Java programmers, and Java programmers stereotype... end users?). Windows has successfully used C++ at low levels, and we should all know that C++ is no more bloated than C thanks to it's pay for what you use philosophy.
I'm not sure if embedded platforms still tend to lack good C++ compilers -- yeah, you've had to write "C with classes" type code in the past (which can often be be a better style for such simple systems anyway... ;P) but the majority of systems I've used have supported a fairly modern GCC or similar quality compiler.

I've been looking around the web and I've seen a deep hatred towards java? I mean to me it seems like a decent language (then again i'm a noob that doesn't know sh*t about programming other then "If then's" statements.) I also have seen that C++ has a very good rep. can someone explain this to me in VERY VERY LAYMEN TERMS? (noticed how i bolded, underlined AND CAPITALIZED, very very laymen.)

That is simply because looking around the web and actually finding professional statements which are not highly subjective, emotional, dogmatic or show even religious tendencies is not an easy task.
For certain topics it is always the same. Use the right keyword and off they go.
Java vs C++
C++ vs C#
C# vs Java
Apple vs Microsoft
.net vs Java
Linux vs Windows
Coca Cola vs Pepsi
whatever

That's the answer to your question.
Well if we're doing the language-bashing thread thing we can safely say that every language sucks for one reason or another. Thing is though that those making a "language X sucks" statement always omit the qualifier "...for reason Y that is important to me right now in use case Z". Just as it's always possible to find a use case in which any given language sucks, it's also possible to find one in which the same language doesn't suck.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

Java gets used a lot, so it also gets hated a lot... same thing with C++ or anything "widely used".
Which started out life as a cheap Java clone (which started out as a cheap C++ clone, written by people who didn't grok C++ or OOP), but has evolved into the language that Java always should have been cool.png
This pretty much summarizes it as concise as one can say it in one sentence.

Most of the intrinsic hatred towards Java comes from a sucks-ass implementation 15 years ago, which made unrealistic claims that it couldn't hold. Java started out as a "better C++" which was considerably worse, considerably slower, unstable, and took a huge download (half an hour at the university, which at that time had an internet connection about 7,000 times faster than what you could get at home...). The only truly cool thing about Java at that time was the built-in high quality 2D vector graphics. That, and the cross-platform GUI which was so slow you could walk away and get a coffee after pressing a mouse button. Which, besides, was only cross-platform in theory, because you could only get Java for exactly 1 non-Sun-workstation platform.

I've been one of the biggest Java haters on the planet. However, all the historic negative arguments no longer hold true. Java is entirely competitive nowadays. A computer nowadays typically has somewhat more than 64 MiB of memory, and a few thousand cycles more or less don't matter a lot either (plus, JIT really works well in the mean time, and JIT compilers surprisingly aren't all that bad).

The "code monkey" problem addressed earlier surely exists, but that is probably just because the standard library coming with Java is so complete that (if you can live with somewhat less-than-optimal performance in the worst case) you really don't need an awful lot of skill to code. Plus, care-free automatic memory management and some other language features lend to the same effect. It's also more profitable to hire unqualified programmers, because a lower quality product that makes it to market sooner than the competition and costs less brings more revenue, as long as it only works somehow.
That does not mean Java is bad as such, however. That would be like saying "beer is stupid" because some people drink it until they pass out in their own vomit.

The totally-complete standard library is one of the major reasons why C# is so successful, too. It's not so much that one or the other language is "superior" in any way, but developing in Java or C# sometimes just makes the development process up to a dozen times faster. Time is money, which means development is cheaper. And that's what counts.

Ummm... Welcome to the 21st century, where the bottleneck in graphics is: the graphics card, your shaders (if you write the like crap, they'll run like crap), and memory I/O (between RAM and the video card). These days, the amount of graphical work done on the CPU is tiny.

Your point would be valid if it weren't for the fact there aren't any Java games that have graphics and performance comparable to a modern game written in a non-Java language (e.g., Crysis).


Spoken like a person who has no sense of style. Seriously though, while you are correct (Crysis in Java?) Minecraft has it's style for a reason but Java is able to do a lot nowadays. For example look at jMonkeyEngine and see what can be done with Java. This is without saying a single person will not be able to model, texture and animate things at Crysis level so that is most probably not going to happen and renders that point moot.



Here's a link to the only list I've found so far of commercial games made with Java:

http://www.java-gami...hp/topic,3123.0

The latest game on the list, Tribal Trouble 2, has dated 3D graphics. Same situation with the rest of the games on the list too. I understand games made with Java have to work within Java's limitations but it's rather euphemistic to explain the reason for the substandard graphics that's consistent on many Java games as simply a matter of differing style. Your reference jMonkeyEngine is a good example of Java trailing behind in the graphics department. Blocky, low poly, and pixelated graphics, seriously?


No it doesn't.



http://www.electroni...ative-code.html

The Android NDK is a companion tool to the Android SDK that lets you build performance-critical portions of your apps in native code. It provides headers and libraries that allow you to build activities, handle user input, use hardware sensors, access application resources, and more, when programming in C or C++. If you write native code, your applications are still packaged into a .apk file and they still run inside of a virtual machine on the device. The fundamental Android application model does not change.[/quote]




Most usages of C++ turn it into that anyway with smart pointers and things like that. Then you go even further with memory buckets etc. Until you basically end up writing verbose C#. If you don't do that with C++ your game or program is going to have so many possible ridiculous bugs and lots of undefined behaviour. Don't believe me? Look at this blog post by John Carmack.


John Carmack acknowledges problems, but what developer never encounters problems? What programming languages never have problems? Should a developer switch to another language simply because he found his current language too hard for him instead of working things out? Carmack never mentioned switching to Java anywhere in that blog post.

I'm not entirely discounting Java as a language for developing games, but with such a discouraging number of commercial games produced with Java, it doesn't support the opinion that Java is good for general game development especially if the developer wants to stay on the cutting edge.

I understand there are developers who feel a sense of romanticism for certain languages because of various reasons (e.g., it's their first language), but sentimentalism shouldn't taint the arguments of why languages are good or bad. Otherwise, why deny the shortcomings of a language in spite of evidence?

Should a developer switch to another language simply because he found his current language too hard for him instead of working things out?


It's not a matter of not being man enough to work through problems. It's that you can do the same things faster, with less bugs and less serious bugs in other languages.

And it's not a matter of learning pains either. Good programmers with tons of experience in C++ still make more bugs than in other languages, and/or their peers using other languages.


I understand there are developers who feel a sense of romanticism for certain languages because of various reasons (e.g., it's their first language), but sentimentalism shouldn't taint the arguments of why languages are good or bad. Otherwise, why deny the shortcomings of a language in spite of evidence?


You're the one espousing C++'s virtues, you tell me.
Language Thread? Check.
In For Beginners? Check.
Devolving Quickly? Check.


This one enjoys fairly significant popularity. (Note that only threads containing significant discussion are included.)

1) Professional Games Made In C#?
2) Java for game development?
3) Java----C/C++
4) c++ or c#
5) Question about Java Vs. C# Vs. C++
6) Java Games?
7) Java is fast?
8) Secondary Language:VB or Java?
9) What makes C++ so powerful?
10) C# games and cheating...
11) Is C# good enough for system utility programming
12) MC++ vs. C#
13) Which language is best for a 3d Games Engine?
14) C# vs C++ as a choice for development
15) Is Java the Future?
16) why C# and not Java?
17) What do you think of the D language?
18) my c++ d c# benchmark!
19) The Definitive Guide to Language Selection
20) Sharp Java
21) C++ or C#?
22) C++ or C#?
23) Java disadvantages
24) C++ or C#?
25) Visual C++.net vs Visual C#.net
26) C# - huh?
27) which language should i learn?
28) C or C++ or C#
29) learn C or C++ ??
30) Is C still useful in gamedev?
31) Why C# XNA When Everyone Wants C/C++
32) JIT compiled code vs native machine code
33) C++ or C?

This particular list is my top ten, because of the sheer frequency with which they occur. 12 days, 10 threads.
1) c++ or c# (5/1/06)
2) Java for game development? (5/2/06)
3) Java Games? (5/3/06)
4) Java----C/C++ (5/3/06)
5) MC++ vs. C# (5/4/06)
6) What makes C++ so powerful? (5/9/06)
7) C# games and cheating... (5/9/06)
8) Is C# good enough for system utility programming (5/9/06)
9) Which language is best for a 3d Games Engine? (5/11/06)
10) C# vs C++ as a choice for development (5/12/06)[/quote]

In time the project grows, the ignorance of its devs it shows, with many a convoluted function, it plunges into deep compunction, the price of failure is high, Washu's mirth is nigh.

This topic is closed to new replies.

Advertisement