Is Java A Language For Sissies ? What's your take ?

My very first programming language was VB6. Then naturally went to VB.net.
C# and Java came later and I haven't touched VB.net in years.

So does this mean out of the all the languages you mentioned... you prefer Java
Tell me more about C#... how different is it from Java?
 
Last edited:
I like Python. Python is awesome. And we built an enterprise solution with Python (well, it grew) and lemme tell you - BIG MISTAKE. Loosely typed FTL in enterprise :(

I'd be interested in hearing how it affected the project. Would you mind creating a thread to elaborate?
 
Java 4 the win

I used to be a big fan of C/C++ but over time moved to Java and have never found a better general-purpose programming language.

Java is incredibly portable, running on smart cards, Blueray disks, dumbphones, smartphones (Android, Blackberry), PC Mac desktops, browser applets and web start, servers, etc. There is a Java implementation on every major PC operating system. Java is the leading technology for medium to large websites. 3 billion devices run some form of Java. In over a decade of being around, its main clone language/platform, .NET, hasn't got a fraction of its popularity or portability. And the Java API is a thick abstraction layer that is genuinely portable, unlike .NET which is just a thin wrapper around the Windows API, making Mono jump through hoops to implement it on *nix (eg. WinForms had to be written on top of X11 from scratch) and necessarily having missing features.

Managed languages are the future, it's that simple. Memory safety eliminates entire categories of bugs, such as memory leaks, buffer overflows and memory corruption: millions of C++ programs crash around the world every day. The problem of accessing a mutable shared-ownership object from any number of threads is a nightmare in C++, with thread-safe reference counting being necessary, whereas in Java you don't worry about any of that. Writing code in a native language means the first thing you think about when writing a function is how to structure your code to release all memory on every return path, in Java you just write code and the garbage collector cleans up memory for you. In the 90s people thought object orientation would be the next big development breakthrough, but it turned out to be garbage collection. Studies have shown the development speed in Java is around double that of C++. We will eventually see native development getting done only when really necessary, the way assembly language is used today.

Security follows straight from memory safety, and countless buffer overflow / code injection attacks have been made through overflowing the memory-unsafe arrays in C/C++, compromising virtually everything in existence, even network-unrelated things like image parsing libraries, something that is impossible in Java. Also Java can sandbox (though that's proven quiet buggy and insecure of late), C++ can't.

After more than 20 years, C++ still doesn't have a finally block and expects you to use objects on the stack whose destructor gets called on method exit to manage resources.

While parsing C++ is a compiler nightmare, the tooling support for Java is incredible, giving everything from syntax highlighting and code refactoring to good static checking, while after > 10 years the only Eclipse code refactoring for C++ is rename field.

Extensive compiler optimizations on Java bytecode are possible, such as deep inter-procedural optimizations, which can only be done optimally at runtime and which C++ compilers still struggle with. Java 8 will even auto-vectorize all instructions into SIMD (eg. SSE) making it competitive with C++ even in scientific computing. LLVM has been trying to get runtime C/C++ optimizations for years, and is still slow. Python on the other hand has a non-thread-safe interpreter, meaning it cannot execute multiple threads concurrently unless they call out into C libraries (which is no longer Python), in other words its a joke on modern multi-core chips.

Unlike .NET the Java API is designed to be extensible: you can add a new security provider, support for a new image or sound file format, etc. system-wide just by dropping a jar into the jre/lib/ext directory.

The amount of free open-source Java libraries is incredible, and covers virtually everything under the sun.

Finally the topic was that it's a "language for sissies", well guess what, Java was one of the first languages to realize complexity does not belong in the language but rather in the class library, hence the rich Java API and the easy, powerful language. The API for other languages is minimal and primitive: C++ didn't even have an official, portable threading library until recently, and C still doesn't. I would argue Python is for sissies, as it doesn't even have static typing.
 
Last edited:
So does this mean out of the all the languages you mentioned... you prefer Java
Tell me more about C#... how different is it from Java?

I love C#. Been using it for about 5 years now. Java not much, maybe 2 years.
 
So does this mean out of the all the languages you mentioned... you prefer Java
Tell me more about C#... how different is it from Java?

Java is like the C# beta /ducks :p

They are very similar in syntax. Java is cross platform and C# not (so +1 for Java). Since .NET 2 though C# has just felt more robust and powerful (from a developer's view).

The important thing is to stay agnostic and use the correct tool for the job. If your app/system is only going to be running on a Windows machine then it is better to use C#. When it comes to web you have to weigh up the hardware and software license costs for running .NET vs it's extra features (WCF for example). Anything else, go Java.

It's really dumb to choose a "better" language. Often in bigger systems you are required to use a combination of these.
 
Herewith a (n exceptionally brief) discussion of Java and C++

Java is a reasonable language, and performs well in large scale development. In fact, it may even outperform C++ when there are repetitive tasks to be done: Java holds regularly executed code "at hand" whereas C++ does not. Hence for single-execution code, C++ is way faster, but for code that gets repeatedly executed, Java eventually gains the upper hand.

For mission critical applications, Java is a definite no-no. The lack of ability to control the garbage collector (yes, you ask - even strongly suggest - the GC to run, but you cannot control when it actually runs). If something needs to be done at a particular microsecond, and the GC decides it needs to run, then the satellite crashes into Pluto.

The extensive body of - freely - available libraries for Java is quite useful. There's a library for just about anything.

So which is better? Well, that depends purely on the nature of your application.

(Note: I specifically mention C++ and not C, as I dislike procedural programming)
 
I'd be interested in hearing how it affected the project. Would you mind creating a thread to elaborate?

I can't go into too much detail unfortunately. The main problems are:
  • It is a very large team and large system and because Python is so "open" everybody can do their own thing
  • Refactoring is a bitch. If you make base changes in JAVA/C# the compiler will tell you where you messed up. Python you have no clue. It's not an Eclipse project but rather a bunch of projects all working together but with multiple versions in multiple development streams at the same time.
  • And then, like I said, you only find some bugs at runtime rather than compile time. For example, some developer decides he is too cool to follow the in house rules and use tabs instead of spaces. Now some merge happens and the indentation gets messed up (the merge tool just sees text). You do not know this happened and if that code is not regression tested with the next release it goes to production.

You learn to manage these risks etc. but you could have put all that effort into something else had you used Java instead. Python is a Swiss Army Knife that you can do lots of stuff with. You're just not suppose to build a massive house with it. ;)
 
I can't go into too much detail unfortunately. The main problems are:

Thanks for the response.

Would most of the problems not have been solved or at least ameliorated by automated testing?
 
Thanks for the response.

Would most of the problems not have been solved or at least ameliorated by automated testing?

If there was a testing framework used/built it and enforced from the start, probably. It's been growing and evolving for almost 7 years now and the scale is massive (it's more like 30+ subsytems all running together with many different entry points) and possibly one of the biggest software solutions in RSA (code base wise). The speed at which development has to be done also means that those tests will constantly need to be updated. Writing the tests will probably take just as much time as the actual development.

I'm learning as we go along and all I can say is that before you embark on writing a new systems you have to really do a lot of thinking upfront (scale, complexity, lifetime) and REALLY decide and enforce a design/development philosophy before anyone writes a line of code. And have people in place to enforce that philosophy.
 
Java is like the C# beta /ducks :p

They are very similar in syntax. Java is cross platform and C# not (so +1 for Java). Since .NET 2 though C# has just felt more robust and powerful (from a developer's view).

The important thing is to stay agnostic and use the correct tool for the job. If your app/system is only going to be running on a Windows machine then it is better to use C#. When it comes to web you have to weigh up the hardware and software license costs for running .NET vs it's extra features (WCF for example). Anything else, go Java.

It's really dumb to choose a "better" language. Often in bigger systems you are required to use a combination of these.

Wrong.

http://en.wikipedia.org/wiki/Mono_(software)

The only license you need to pay for is server 2012. We have 5 2012 servers running. No other licenses except sql but we are moving to postgres now.
 
IIS and your Widows operating systems needs a license.

And Mono doesn't count. Would you honestly recommend using Mono for production?


Go read up on it a bit before making stupid claims.

Rofl and you do NOT need a license for IIS wtf are you smoking.
 
Go read up on it a bit before making stupid claims.

Rofl and you do NOT need a license for IIS wtf are you smoking.

OK, so you just want to argue for the sake of it. You need to pay for Windows Server OS on which IIS is bundled. Your panties untwisted now?
 
OK, so you just want to argue for the sake of it. You need to pay for Windows Server OS on which IIS is bundled. Your panties untwisted now?

No but if you're going to come across that you know everything least have your facts straight. Windows needs a license IIS doesnt, Mono has been going 8 years its production usable for people that want to run products on linux they will obviously need to test it thoroughly on that environment. Technically IIS isnt bundled you have to install it ;)


http://www.mono-project.com/Companies_Using_Mono lots of people using it in production.
 
Last edited:
Top
Sign up to the MyBroadband newsletter
X