Hacker News new | past | comments | ask | show | jobs | submit login

Oracle basically destroyed every cool technology they inherited.



I know everybody hates Oracle here, but Java 7, 8 and the upcoming 9 releases, all of them under Oracle's control, have had more improvements than Sun did in the years prior to the acquisition. How's that destroying anything?


* Ugly Oracle DB style contracts

* Scaring potential customers away with said contracts and suing customers

* Google walking out on Java going with Kotlin instead....boom billions of users moving to a different language. Still on the JVM though....but that's not a hard requirement.


In spite of the lawsuits, Google is actually a big contributor to the OpenJDK and a common presence at Java Languages Summit.

As for Kotlin, it remains to be seen how much uptake it will actually take.

Despite all attempts from Apple to push Swift, many keep on using Objective-C.


> As for Kotlin, it remains to be seen how much uptake it will actually take.

Kotlin is a language made by JetBrains which happens to be the creator of the official Android IDE. So yes the push will be strong from both Google and JetBrains. Java was a bit more modern than Objective-C but if I see what our junior Android dev has to type and type and type and type in Java to do the same as I do in Swift....kids get bored quick you know...

> Despite all attempts from Apple to push Swift, many keep on using Objective-C.

I don't encounter many during my job as an iOS developer. I encounter people maintaining an existing Objective-C codebase that isn't worth switching and adding 10MB of application weight for Swift.

I guess for all green fields projects 80% is Swift. There's just no reason to use Objective-C anymore since Swift 3 so the only people that choose it are:

a) People interfacing with C / C++ a lot b) People creating a framework that needs to play nice with both c) People stuck in old ways


It doesn't matter if kids get bored, rather what the people giving the money want to get.

So far, I haven't found an enterprise customer that was willing to allow anything but Java, unless it is required by the tooling.

For example Scala only when making use of Spark.

I am happy that Kotlin is now an approved language on Android, but trying to kill Java on JVM, C on UNIX, JavaScript on the browser, ....

It is never going to go away, and those that embrace the language of the platform are in advantage.


It is absolutely not destroyed but I'm more hesitant about choosing it than I used to be.


The only time Java was cool was in 1995. But almost right off the bat, the language was ruined by an incredible desire to not even potentially break or change anything -- this is what got us inner classes for event handling -- and every design decision since.

If anything, Java (the language) is probably improving at a faster rate now than ever before but much of the damage is already done.


The only time Java was cool was in 1995.

Has been cool the last few years as well.



So far they have improved Java much more than Sun ever cared to do on its last years.


If someone doesn't know Java and c#, which one would u recommend learning ? Which one is more enjoyable and has better ecosystem? Given both are strong in European markets.


I work with both.

Extending a bit iainmerrick's answer, it depends on what you want to do.

C# is stronger on the desktop when focusing on Windows or game development.

Thanks to .NET Native, the UWP teams now are doing most of their demos on C#, even when many of the performance critical COM componentes are actually written in C++.

For web related development, usually only companies with focus on Microsoft software tend to pick ASP.NET solutions.

Now .NET Core might change that, but until 2.0 it was mostly a thing for early adopters. Currently enteprise class databases like Oracle are yet to support .NET Core drivers.

For mobile development C# is also a good option, thanks to Xamarin.

Another area where .NET is strong is on life sciences, integrating .NET with COM/OCX drivers for medical devices or laboratory robots.

Java's support is stronger on the web, distributed computing, big data, embedded devices and of course Android.

Swing and JavaFX can be quite usable, but require a bit of graphics programming skills, so they got the fame of not being easy to produce nice results.

For web applications there are lots of stacks JEE, Spring, Netty, Tomcat, JBoss, Jersey,....

Also all mainframes also support Java, companies like Gemalto, Ricoh and Cisco have Java OSes on their devices.

IBM, PTG, Aicas, MicroEJ, Skelmir are a few exemples of companies selling commercial JDKs for embedded development.

Regarding language features C# and F# are more enjoyable, but the open source culture is stronger on the Java side, and there are also alternative languages on the JVM.

However on the Java projects I usually work, the customers are very conservative and tend to only accept straight Java code.

Also both stacks tend to copy ideas from one another, so it is possible to kind of keep on track with both.

The hard part are those areas that are different like lack of values in Java or the way equality works.

I love Visual Studio, my favourite Java IDEs are Netbeans and Eclipse. InteliJ and Android Studio need to be tuned to run on my hardware.


>Swing and JavaFX can be quite usable, but require a bit of graphics programming skills

By this, do you mean skills with computer graphics programming versus GUI programming? As in things like double-buffering, BitBLT, etc.

https://en.wikipedia.org/wiki/Bit_blit

And if so, why are those needed for Swing and JavaFX?


A bit, yes.

Like in any GUI toolkit, one needs to have the taste and knowledge how to make into reality the wishes of a designer, or be a designer themselves.

On Swing's case taking the effort of reading books like "Filthy Rich Clients" and "Swing Hacks: Tips and Tools for Killer GUIs".

http://filthyrichclients.org/

https://joshondesign.com/c/writings

And be aware of cool 3rd party components like http://www.jgoodies.com/

The biggest problem with Swing is that Sun wasn't that good understanding the desktop, so although Swing is quite capable it has lousy defaults, like requiring the native look and feel to be explicitly configured, or making it too easy to run everything on the main thread.

On JavaFX's case, it is easier to use, but similar to using QML, XAML or the Web.

Following blogs like FX Experience http://fxexperience.com/ helps discovering cool components.

For those that care about UI/UX, GUI programming is graphics programming.

There is only so much that the default controls can do in any toolkit, extending them, customizing how they behave, or even creating them from scratch requires knowledge of graphics programming, because in the end you are putting pixels into the screen.


Thanks for the detailed answer; very interesting info. I had done a bit of Win32 GUI programming much earlier (I mean in C, had also done some VB and Delphi work), and had read some books about it. I remember reading about owner-drawn controls, etc. Good stuff.


Having used a bit of both, I'd say C# is a slightly better and more enjoyable language.

They're really very similar, so if you learn one, many of the skills will transfer easily over to the other -- should only take a few weeks of serious use to figure out all the subtle differences.

Java has the better ecosystem. C#'s standard infrastructure and tooling is a bit of a mess, although if you're just targeting Windows (or Unity) maybe it's OK. C# is even less "write once run anywhere" than Java, because there are all sorts of different profiles with different subsets of the standard library available.


Come on, default method in interface is a Java 8 feature, what's the coolness of C#is there?


Non-nullability is you know quite a thing. Even in it's current half-baked form. That default method interface is not something that I would touch on a day-by-day basis.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: