Interesting. I have an IT friend who constantly blasts Java because he claims that it has so many bugs that it is way too easily hacked, or has very low security. Which begs the question, if it is so buggy, why is it the most popular? And if it indeed is not as buggy as he says it his, why do you think he would say that? P.S. He doesn't program with Java at his work. He does scripting.
The main issue with Java (when it comes to security) tends to be that it's usually used with massively overengineered frameworks that make it difficult to fully understand the implications of changes.
Java is popular because it's popular - students learn Java because that's what industry uses, and vice versa. It remains in use because it's just good enough to get the job done, but has enough problems (e.g. type erasure) that plenty of people despise it.
Because given any metric there is always going to be a better choice.
I strongly disagree. Unless you ignore the metrics of performance, stability, ease of development, debugging and maintainability. Java is a solid choice. I'm much more concerned of the current influx of scripting languages being applied to general purpose development.
C / C++ / D is going to outclass Java on every last metric you picked. (In the hands of a competent programmer). D isn't even what I would consider a mainstream mature language and it still makes Java look like the kid licking the windows in the back of the short bus.
Now, I'll agree with you about the scripting languages. Most people who are scripting are just as bad as Java developers. But that's kinda the point of scripting languages. It's a solution for retards.
C / C++ / D is going to outclass Java on every last metric you picked. (In the hands of a competent programmer). D isn't even what I would consider a mainstream mature language and it still makes Java look like the kid licking the windows in the back of the short bus.
C/C++/D usually outperforms Java, but that's not always the case. C/C++/D all use a lot less memory than Java, which is Java's main trade-off. At virtually every other metric (for instance maintainability, ease of development, deployment) Java wins by a fair amount.
D is however an awesome language and I really hope it reaches a popularity that some day makes C++ obsolete. I don't think that it will be able to compete with Java though, as it doesn't really solve the same problems Java does. It does however solve most if not all of C++'s intricate annoyances.
Now, I'll agree with you about the scripting languages. Most people who are scripting are just as bad as Java developers. But that's kinda the point of scripting languages. It's a solution for retards.
(for instance maintainability, ease of development, deployment) Java wins by a fair amount.
All you are doing here is advocating for sub-par developers who are locked into specific tools. None of these things actually have anything to do with code base. All of these things generally require a non-langage tool. Like an IDE. So, you can't really credit Java as a language for any of these gains.
Basically, your argument is: "The tools for Java are made in the mindset that Java developers are lazy retards. The GCC tool chain assumes that programmers are competent and know how to do it themselves."
Which isn't a good way to describe Java developers. Basically, you'll attract the 2 kinds of people I described above. 1) The college student who never bothered to learn. 2) The Pointy Haired Boss.
I don't think you have much to support your position. Java's design is vastly different from C++, and it gives a lot of benefits for the programmer. For instance take writing libraries; completely trivial in Java, extremely non-trivial in C++. Multiple inheritance. Stack/heap and how that affects the lifetime of objects and how you deal with objects you no longer need depdending on where they're located. Thread-safety. Networking. Binary compatibility.
No, there's not a conspiracy between colleges and pointy-haired bosses that synthetically keeps Java alive. Java is a solid choice with very reasonable trade-offs and that's why people use it.
Writing a library in C++ is no more difficult than in Java. The difference, once again, isn't the language. It's the tools and the competency of the developer.
Tomorrow, ask the monkey in the cubicle next to you to create a library without his favorite IDE. Just give him notepad and a CLI. He will be outed for the magnificent fool he truly is.
Writing a library in C++ is way more difficult than in Java. Firstly, you'll need two declarations, one regular and one export (the .h file included for the .lib, .so or .dll). Secondly, C++ has complete type erasure. Writing libraries with C++ is extremely tedious, while in Java it doesn't take any extra time at all; all public classes and methods can be loaded, and that's it. In C++ there's also two types of libraries, one for static linking and one for dynamic linking, and these needs to be determined depending on what they are supposed to do and how they are supposed to be integrated in the application. Which brings up another case; there is no penalty in Java for dynamic linking, but there is in C++; dynamically linked libraries in C++ needs to conform to what the program expects due to memory offsets, while Java doesn't care, because it not designed that way.
Tomorrow, ask the monkey in the cubicle next to you to create a library without his favorite IDE. Just give him notepad and a CLI. He will be outed for the magnificent fool he truly is.
Most of the Java developers you out as "monkeys" which went to college and only know Java, did actually learn Java with something like notepad and a command line, because for some reason that's how Java is taught in college. Using a text editor and cli also doesn't make you a better programmer. In fact I'd argue that it makes you worse, because you're wasting your own time and productivity because you refuse the help an IDE will give you. People convince themselves that they "can't" use an IDE because they're so used to having to browse a million different source code files just to figure out what that function they need actually does. And someone can't fathom how IDE's somehow can magically do that for you by pressing alt+f1 and show the source of the function in an instant without grepping at all. Stop being elitist about writing code in a manner that was typical in 1970 because you won't impress anyone.
Every time I bring up how IDE's are a good productivity tool, people start acting like they are doing some sort of task that is impossible to automate on a computer. It's not impossible, it's not even hard, and most IDE's will do them for you so you don't have to. It has nothing to do with "being better", it has to be with being blind and impenetrable to reason.
Using a text editor and cli also doesn't make you a better programmer.
I never claimed using a CLI makes you a better developer. What I'm saying is, we need a way to determine if Java AS A LANGUAGE is intrinsically better than some other language. Therefore, we need to get rid of the cruch Java developers rely on. Which is the IDE.
Then we can watch the Java monkey's futile attempts at creating library and then we realize that it's not the LANGUAGE that makes work easier, but the tools the IDE provides.
Then we can happily go back to work using the IDE but with the new wisdom admitting that "Writing a library in Java is easier" is just an old wives tale.
It is the design of the language which makes it easier. Writing libraries in C++ is a major pain in the ass with our without an IDE. Writing a library in Java is trivial, with or without an IDE.
Java code is easier to develop and maintain than C++, that's one of Java's primary strengths and why it got so popular so fast. This is not an opinion, it is fact.
Let me guess... You are the pointy haired boss? No, you sound like a shrill fan boy. So, you must be the lazy college student who only ever learned Java.
While Java is an inferior programming language to many newer languages, it's popular for the same reason the English language is.
It was around at the right time and places.
Now they have enough legacy that it will be a very long time before we get rid of either of them.
29 comments
2 u/Zondervan 15 Jul 2015 06:41
Interesting. I have an IT friend who constantly blasts Java because he claims that it has so many bugs that it is way too easily hacked, or has very low security. Which begs the question, if it is so buggy, why is it the most popular? And if it indeed is not as buggy as he says it his, why do you think he would say that? P.S. He doesn't program with Java at his work. He does scripting.
10 u/Master_Foo 15 Jul 2015 07:14
People program in Java because that's the ball the monkey was given to play with.
Generally speaking it goes like this.
1) Programmer learned Java in college and never bothered to learn anything else.
2) Pointy Haired Boss looks at charts like this and sees Java at the top. Then hires people who only learned Java in College.
Nobody uses Java "Because it's a good choice". Because given any metric there is always going to be a better choice.
1 u/Zondervan 15 Jul 2015 07:16
Ah I see. So what my friend was saying most likely isn't a lie? People just don't want to learn anything else?
0 u/rdnetto 15 Jul 2015 11:43
The main issue with Java (when it comes to security) tends to be that it's usually used with massively overengineered frameworks that make it difficult to fully understand the implications of changes.
Java is popular because it's popular - students learn Java because that's what industry uses, and vice versa. It remains in use because it's just good enough to get the job done, but has enough problems (e.g. type erasure) that plenty of people despise it.
2 u/Cuddlefluff 15 Jul 2015 08:11
I strongly disagree. Unless you ignore the metrics of performance, stability, ease of development, debugging and maintainability. Java is a solid choice. I'm much more concerned of the current influx of scripting languages being applied to general purpose development.
0 u/Master_Foo 15 Jul 2015 08:26
C / C++ / D is going to outclass Java on every last metric you picked. (In the hands of a competent programmer). D isn't even what I would consider a mainstream mature language and it still makes Java look like the kid licking the windows in the back of the short bus.
Now, I'll agree with you about the scripting languages. Most people who are scripting are just as bad as Java developers. But that's kinda the point of scripting languages. It's a solution for retards.
1 u/Cuddlefluff 15 Jul 2015 09:31
C/C++/D usually outperforms Java, but that's not always the case. C/C++/D all use a lot less memory than Java, which is Java's main trade-off. At virtually every other metric (for instance maintainability, ease of development, deployment) Java wins by a fair amount.
D is however an awesome language and I really hope it reaches a popularity that some day makes C++ obsolete. I don't think that it will be able to compete with Java though, as it doesn't really solve the same problems Java does. It does however solve most if not all of C++'s intricate annoyances.
:D
0 u/Master_Foo 15 Jul 2015 09:55
All you are doing here is advocating for sub-par developers who are locked into specific tools. None of these things actually have anything to do with code base. All of these things generally require a non-langage tool. Like an IDE. So, you can't really credit Java as a language for any of these gains.
Basically, your argument is: "The tools for Java are made in the mindset that Java developers are lazy retards. The GCC tool chain assumes that programmers are competent and know how to do it themselves."
Which isn't a good way to describe Java developers. Basically, you'll attract the 2 kinds of people I described above. 1) The college student who never bothered to learn. 2) The Pointy Haired Boss.
1 u/Cuddlefluff 15 Jul 2015 10:53
I don't think you have much to support your position. Java's design is vastly different from C++, and it gives a lot of benefits for the programmer. For instance take writing libraries; completely trivial in Java, extremely non-trivial in C++. Multiple inheritance. Stack/heap and how that affects the lifetime of objects and how you deal with objects you no longer need depdending on where they're located. Thread-safety. Networking. Binary compatibility.
No, there's not a conspiracy between colleges and pointy-haired bosses that synthetically keeps Java alive. Java is a solid choice with very reasonable trade-offs and that's why people use it.
0 u/Master_Foo 15 Jul 2015 11:18
Writing a library in C++ is no more difficult than in Java. The difference, once again, isn't the language. It's the tools and the competency of the developer.
Tomorrow, ask the monkey in the cubicle next to you to create a library without his favorite IDE. Just give him notepad and a CLI. He will be outed for the magnificent fool he truly is.
1 u/Cuddlefluff 15 Jul 2015 11:44
Writing a library in C++ is way more difficult than in Java. Firstly, you'll need two declarations, one regular and one export (the .h file included for the .lib, .so or .dll). Secondly, C++ has complete type erasure. Writing libraries with C++ is extremely tedious, while in Java it doesn't take any extra time at all; all public classes and methods can be loaded, and that's it. In C++ there's also two types of libraries, one for static linking and one for dynamic linking, and these needs to be determined depending on what they are supposed to do and how they are supposed to be integrated in the application. Which brings up another case; there is no penalty in Java for dynamic linking, but there is in C++; dynamically linked libraries in C++ needs to conform to what the program expects due to memory offsets, while Java doesn't care, because it not designed that way.
Most of the Java developers you out as "monkeys" which went to college and only know Java, did actually learn Java with something like notepad and a command line, because for some reason that's how Java is taught in college. Using a text editor and cli also doesn't make you a better programmer. In fact I'd argue that it makes you worse, because you're wasting your own time and productivity because you refuse the help an IDE will give you. People convince themselves that they "can't" use an IDE because they're so used to having to browse a million different source code files just to figure out what that function they need actually does. And someone can't fathom how IDE's somehow can magically do that for you by pressing alt+f1 and show the source of the function in an instant without grepping at all. Stop being elitist about writing code in a manner that was typical in 1970 because you won't impress anyone.
Every time I bring up how IDE's are a good productivity tool, people start acting like they are doing some sort of task that is impossible to automate on a computer. It's not impossible, it's not even hard, and most IDE's will do them for you so you don't have to. It has nothing to do with "being better", it has to be with being blind and impenetrable to reason.
0 u/Master_Foo 15 Jul 2015 12:57
I never claimed using a CLI makes you a better developer. What I'm saying is, we need a way to determine if Java AS A LANGUAGE is intrinsically better than some other language. Therefore, we need to get rid of the cruch Java developers rely on. Which is the IDE.
Then we can watch the Java monkey's futile attempts at creating library and then we realize that it's not the LANGUAGE that makes work easier, but the tools the IDE provides.
Then we can happily go back to work using the IDE but with the new wisdom admitting that "Writing a library in Java is easier" is just an old wives tale.
1 u/Cuddlefluff 15 Jul 2015 13:35
It is the design of the language which makes it easier. Writing libraries in C++ is a major pain in the ass with our without an IDE. Writing a library in Java is trivial, with or without an IDE.
Java code is easier to develop and maintain than C++, that's one of Java's primary strengths and why it got so popular so fast. This is not an opinion, it is fact.
0 u/Master_Foo 15 Jul 2015 14:26
Let me guess... You are the pointy haired boss? No, you sound like a shrill fan boy. So, you must be the lazy college student who only ever learned Java.
1 u/Cuddlefluff 15 Jul 2015 16:10
I've worked with both C++ and Java (among others) professionally in the past. I am currently employed as a C# developer.
0 u/ITW 15 Jul 2015 23:08
JAVA PROGRAMMER DETECTED.
C# master race. VNext here I come.
4 u/DeathorGlory9 15 Jul 2015 07:15
While Java is an inferior programming language to many newer languages, it's popular for the same reason the English language is. It was around at the right time and places. Now they have enough legacy that it will be a very long time before we get rid of either of them.
1 u/Zondervan 15 Jul 2015 07:17
Okay! Thank you. That explains it.
1 u/DeathorGlory9 15 Jul 2015 07:28
I suppose I should also point out that while Java may have its problems, it still is a fairly decent programming language.
1 u/Biodiv 15 Jul 2015 07:27
Old school 2014. Javascript has eclipsed Java.
https://blog.newrelic.com/2015/07/07/popular-programming-languages/
0 u/Cuddlefluff 15 Jul 2015 08:45
These are internet trends and do not correlate with the actual market. Java is everywhere and Java is in everything.
1 u/Biodiv 15 Jul 2015 14:36
My bad. Will still take JS over Java anyday!
0 u/ITW 15 Jul 2015 23:09
I dont even like javascript as a programming language and I agree. It is becoming the goto language for tooling these days.
1 u/rdnetto 15 Jul 2015 11:47
Interesting. I'm (pleasantly) surprised D ranked so highly - IMO it doesn't get nearly enough attention for what it offers.
1 u/Master_Foo 15 Jul 2015 13:05
D is still young.
We need better environments to attract D newbies. Or, we need a killer framework to attract specific industry (Like Rails is to web developers).
1 u/japanesehamantashen 15 Jul 2015 21:48
Did you see how it's beating both lisp and haskell? I'm as surprised as you are!
0 u/gone-voating 16 Jul 2015 05:33
I cannot wait for golang to finally wiggle its way onto this list.