News for hackers. Stuff that matters.
Re:Improved Docker Container Integration with Java 10 by chris_wot on Wednesday April 04, 2018 @11:49AM (#16755854)
Genuine question: how many startups are using Java now? is this dealing with older sites that are stuck with Java on the server, or are there genuinely many new deployments of Java-based systems out there?
Re:Improved Docker Container Integration with Java 10 by ganonm on Wednesday April 04, 2018 @12:29PM (#16756303)
I am at an early stage startup which is using Java (and Kotlin) on the server-side. There are various reasons for this, most of them pragmatic, but also some technical ones. Pragmatic reasons:

- Many engineers know Java to at least an intermediate level, so they can be productive quicker (and hiring is easier)

- We had some existing libraries written in Java, so integrating them with the web platform was much easier if we went down the JVM route

- Java is the language most familiar to members of the startup (including me, although I also have experience in RoR, Kotlin, ObjectiveC and JavaScript)

Technical:

- Java is generally very performant and running on the JVM means we don't generally have to worry about platform specific issues (there are well known exceptions of course e.g. file path issues)

- The language itself is at a reasonable level of abstraction. It is strongly typed and IMO, writing a non-trivial backend in a dynamically typed language is a sub-optimal choice. It has a huge ecosystem of robust, battle tested libraries that are indispensable to us (e.g. JGraphT). There is a huge community - you are unlikely to run into 'uncharted' territory

- It is popular to hate on Java but it really isn't that bad a language, especially if you aim to follow guidelines like those in Effective Java (probably my favourite programming book) e.g. avoiding mutable state and side-effects. It will never be as good as a modern language like Kotlin (data classes are my favourite feature there), but it is good enough

- The server frameworks available are seriously robust and 'just work'

- There is always the option of using alternative JVM languages (we use Kotlin for a large part of the backend)

In summary, we are 6 months into developing the web platform, progress is rapid, and we have no regrets (yet) about the technology choices. IMO, sometimes boring is best.

Re:Improved Docker Container Integration with Java 10 by haglin on Friday April 06, 2018 @08:07AM (#16772557)
> It will never be as good as a modern language like Kotlin (data classes are my favourite feature there), but it is good enough

Data classes may come to Java.

http://cr.openjdk.java.net/~briangoetz/amber/datum.html

http://mail.openjdk.java.net/pipermail/amber-spec-experts/20...

Fibers, continuations, string literals, pattern matching and value types are in the works.

http://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.htm...

http://openjdk.java.net/jeps/326

https://www.youtube.com/watch?v=n3_8YcYKScw

http://openjdk.java.net/projects/valhalla/

Re:Improved Docker Container Integration with Java 10 by chris_wot on Wednesday April 04, 2018 @12:50PM (#16756528)
I think people must think I hate Java. I don’t. I think it’s great and I love Spring, though I have been mostly programming in C++ so haven’t touched Java in a long while personally.

I’m more concerned with the copyright status of Java APIs. Can you really be sure that you will be safe from Oracle’s clutches?

Re:Improved Docker Container Integration with Java 10 by maltalex on Wednesday April 04, 2018 @01:36PM (#16757006)
> I’m more concerned with the copyright status of Java APIs

Building something using OpenJDK using Java APIs shouldn't get you in any trouble.

What got Google in trouble with Oracle was that they copied and re-implemented all of Java's APIs. Are you planning on doing something similar?

Re:Improved Docker Container Integration with Java 10 by michaelcampbell on Wednesday April 04, 2018 @06:33PM (#16759913)
> What got Google in trouble with Oracle

... was a big wallet.

Re:Improved Docker Container Integration with Java 10 by chris_wot on Wednesday April 04, 2018 @09:15PM (#16760916)
Funny, the WINE project does this.
Re:Improved Docker Container Integration with Java 10 by maltalex on Thursday April 05, 2018 @04:12AM (#16762872)
So does ReactOS.

Only both projects are pretty pointless to sue since they aren't making any money.

Re:Improved Docker Container Integration with Java 10 by ganonm on Wednesday April 04, 2018 @01:03PM (#16756675)
I had assumed you weren't a fan, apologies for jumping to conclusions. The copyright concerns are valid - I've only followed the whole Oracle vs. Google litigation from a distance. I'm hoping the little guys like us won't be affected.
Re:Improved Docker Container Integration with Java 10 by vbezhenar on Wednesday April 04, 2018 @02:03PM (#16757276)
If Oracle would win this lawsuit, entire industry will be in a serious trouble. Don't forget to pay IBM for every SQL statement you wrote, they invented SQL as an API for relational database after all.
Re:Improved Docker Container Integration with Java 10 by javier2 on Wednesday April 04, 2018 @02:16PM (#16757392)
I like java. I don't love it, but it's a trusty workhorse and a nice tool with a great ecosystem.
Re:Improved Docker Container Integration with Java 10 by abalone on Wednesday April 04, 2018 @04:01PM (#16758449)
Those are good reasons. What determines when you use Kotlin over Java?
Re:Improved Docker Container Integration with Java 10 by ganonm on Thursday April 05, 2018 @05:19AM (#16763194)
I work mostly solo on the web platform which is in Kotlin. It uses our 3D printing algorithms which are written in Java (which I also work on). Some weeks I'm writing mostly Java, others Kotlin.

We're looking for engineers in London incidentally, if anyone is interested. See my post in this month's who's hiring.

Re:Improved Docker Container Integration with Java 10 by maltalex on Wednesday April 04, 2018 @01:32PM (#16756957)
> Genuine question: how many startups are using Java now? is this dealing with older sites that are stuck with Java on the server, or are there genuinely many new deployments of Java-based systems out there?

Quite a few. It's a solid choice for a startup for a variety of reasons:

- The Java (and more generally, the JVM) ecosystem is huge and includes stable, performant libraries and frameworks for just about every use case you can have. No need to re-invent the wheel.

- Java as a language is mature and performant, but is still actively being improved.

- No vendor lock-in. There are multiple implementations of everything including the JVM itself (unlike C# for example).

- There are very good tools for developing, debugging and profiling JVM applications.

- Some of the most popular big-data related tools are all based on the JVM. Just to name a few - Kafka (Scala), Hadoop (Java), Cassandra (Java), Spark (Scala), Ignite (Java), Elasticsearch (Java), Storm (Clojure), Neo4j (Java) and many more. So even if you're not using Java, you're probably using Java.

- Android apps are JVM-based. So every startup with a native android app is writing Java (or Kotlin).

- Hiring Java developers is easy(er). Everyone knows Java. Want to hire a junior developer? No problem. Want a veteran with 20 years of Jave experience? You can find those too.

- Java is well supported - due to its popularity, vendors usually offer first class SDKs and support for Java developers.

- There are many JVM-based languages. Don't like Java? No problem - you can use Clojure, Kotlin, Groovy, Scala, JRuby or even Jython. Some of them are even directly compatible with Java (and/or each other) so you can mix and match in some cases.

Re:Improved Docker Container Integration with Java 10 by actsasbuffoon on Wednesday April 04, 2018 @12:27PM (#16756275)
We use a bunch of different tech stacks, but there's some Java in there.

In fact, I recently had to create a cross-platform desktop app, and I'm still not aware of a better option then the JVM. I would have preferred to write it in Scala, but opted for Java to make it easier for the rest of the team to maintain.

Java isn't an awesome language, but it's fine. There's a lot of awful legacy Java code out in the wild, and I wouldn't want to work on it. But Java as a language is boring, inoffensive, and it works. As a result, it's probably going to be around for a long time.

Re:Improved Docker Container Integration with Java 10 by joaomacp on Wednesday April 04, 2018 @12:56PM (#16756585)
> I recently had to create a cross-platform desktop app, and I'm still not aware of a better option then the JVM.

What GUI library(ies) did you use? Just Swing? Java-FX as well?

I'm curious about this - I've developed the macOS part of a desktop app, where the Windows part used WPF, and we shared C# code (.net core, so it would run in both platforms).

The advantages were that each app looked 'native' to its OS. But in my opinion, the disadvantages outweighed them: a) No linux support. b) Double the work on the UI parts.

The Java alternative would reverse this: no native-looking UI elements, but they would be done once and run everywhere, including Linux. Another alternative would be Electron, but I feel (though I'm not sure) Java would be more performant.

Can anyone chime in on this? I know there's no definitive winner on this space...

Re:Improved Docker Container Integration with Java 10 by actsasbuffoon on Wednesday April 04, 2018 @03:25PM (#16758039)
I just used JavaFX. It looks native everywhere, the tooling was good, and it works on Linux. I recommend taking a look.

I've written almost no Java before this project, and I had never used JavaFX before. It took about 2 weeks to go from beginning to end on the project, which I was happy with.

Re:Improved Docker Container Integration with Java 10 by vbezhenar on Wednesday April 04, 2018 @03:42PM (#16758239)
Oracle wants to drop JavaFX. I'm not sure about its future. It might be bright if someone wealthy would pick it up or dark if it'll end up in some apache catacombs. I would use Swing, it's very old, but it works and it's not going anywhere.
Re:Improved Docker Container Integration with Java 10 by chris_wot on Wednesday April 04, 2018 @11:14PM (#16761493)
Ah, Oracle - where good frameworks and open source products go to die.
Re:Improved Docker Container Integration with Java 10 by chvid on Wednesday April 04, 2018 @12:37PM (#16756395)
I think if you count the JVM languages as one (Scala, Java, Kotlin, Groovy) it is the largest even for startups. (This article deals with a property of the JVM not really Java the language.)
Re:Improved Docker Container Integration with Java 10 by deadc0de on Wednesday April 04, 2018 @11:59AM (#16755968)
JVM is pretty much running half of the internet.
Re:Improved Docker Container Integration with Java 10 by relics443 on Wednesday April 04, 2018 @12:26PM (#16756270)
Almost every one that has an Android app :/

We're also moving ahead with our plan to replace node with the jvm for our backend.

Re:Improved Docker Container Integration with Java 10 by Yhippa on Wednesday April 04, 2018 @12:43PM (#16756455)
Why are you replacing node?
Re:Improved Docker Container Integration with Java 10 by relics443 on Monday April 09, 2018 @09:44AM (#16792883)
1. Static typing without having to deal with TS

2 (main reason). Our codebase has turned into a disaster, and we realized that none of our node developers are senior despite what their resume says; our interview process was more geared towards hiring anyone than hiring well. We tried finding a more senior node engineer, but we couldn't given our time constraints, so I'm taking some of our actual senior engineers from our mobile team, and the consensus was that we wanted to work with Kotlin.

Re:Improved Docker Container Integration with Java 10 by bebop on Wednesday April 04, 2018 @12:01PM (#16755987)
My company is not a startup, but we use Java heavily (also a good bit of python). Spring Framework is quite nice these days and being able to use Clojure pain free has been a nice bonus.

Recently we have started a migration of our pipeline to Kubernetes, so these improvements are a real benefit to our use case.

Re:Improved Docker Container Integration with Java 10 by specialist on Wednesday April 04, 2018 @01:46PM (#16757100)
FWIW, Java on the desktop is alive and well, including games and IDEs. For example, Spine is best in class 2D animator.

http://esotericsoftware.com

Re:Improved Docker Container Integration with Java 10 by jrs95 on Wednesday April 04, 2018 @12:10PM (#16756098)
Most startups in the Midwest are using Java in my experience. Since most of our job market is banks, insurance, etc there's just a lot of Java expertise.
Re:Improved Docker Container Integration with Java 10 by fredley on Wednesday April 04, 2018 @12:25PM (#16756253)
It depends what you've done and what you're going on to do. Spent your time so far as a Java developer, spotted a gap in the market for a tool for Java developers to do [x], then gone on to build a startup around it? I'm sure there's a fair few of those. And if there aren't it's probably an underserved market, there are plenty of very wealthy companies using Java.
Re:Improved Docker Container Integration with Java 10 by mbesto on Wednesday April 04, 2018 @12:10PM (#16756092)
Really depends on your definition of "startup". Either way, I'd say it's generally still popular for new projects - especially those where the path to product market fit is pretty clear.
Re:Improved Docker Container Integration with Java 10 by badpun on Wednesday April 04, 2018 @12:42PM (#16756441)
> are there genuinely many new deployments of Java-based systems out there?

Java is absolutely huge in the corporate world, where they build new projects with it all the time.

Re:Improved Docker Container Integration with Java 10 by dmux on Wednesday April 04, 2018 @12:04PM (#16756028)
We're currently using Groovy and Grails deployed within Docker containers to ECS.
Re:Improved Docker Container Integration with Java 10 by jryan49 on Wednesday April 04, 2018 @12:03PM (#16756019)
Plenty. You'll find it in more enterprise-sy and older software shops, not so much startups.

edit: sorry I mean other than startups you'll find plenty.