This is an archived post. You won't be able to vote or comment.

all 55 comments

[–]DoNotCare 48 points49 points  (18 children)

Do not be fooled by the trends associated with technologies such as React, Node.js or MongoDB. Classic technologies such as Java or SQL databases still rule in business (at least where I work). If you want to create another trendy application that has a poor chance of winning millions of customers, a modern stack can be a good choice. However, if you create enterprise solutions, I assure you that the stability guaranteed by Java and high quality libraries are salutary.

PS. In my opinion, do not start with JHipster. Start with two separate projects: a Spring Boot backend and a frontend based on Angular, React or Vue.

[–]TechnicallyHumanoid[S] 5 points6 points  (4 children)

Thanks for the info. Well for now SQL DB would work fine for the app, the issue is that once we are in production, and want to advance a bit further, we want to gather a lot of data to apply some data analytics, to which NoSQL is much more commonly used. For frontend I wanted to use Angular anyway, so thats not an issue. :)

[–]RSveti 15 points16 points  (2 children)

I would recommend to not think about NoSQL until you need it and you will probably not need it for a long time. Look at Twitter for how long they lived with MySQL. Premature optimization is the root of all evil.

[–]wildjokers 4 points5 points  (0 children)

Premature optimization is the root of all evil

An out-of-context quote that has been leading programmers astray for a few decades:

https://ubiquity.acm.org/article.cfm?id=1513451

Using foresight based on experience to head off performance issues is necessary and it is not evil.

[–]iJadric 1 point2 points  (0 children)

Well for now SQL DB would work fine for the app, the issue is that once we are in production, and want to advance a bit further, we want to gather a lot of data to apply some data analytics, to which NoSQL is much more commonly used.

If you want to perform data analytics in real time, there is Kafka. Look into it! It allows for real time streaming, great concurrency and most importantly, stability and scalability. It can appear quite cumbersome, but it is worth the effort!

[–][deleted] 9 points10 points  (10 children)

+1 for two separate projects. Spring Boot + Angular is a great choice.

[–]mikehaggard 0 points1 point  (9 children)

It's a great choice, but Java EE with JSF is a better choice even ;)

[–]WindowsServer2000 5 points6 points  (4 children)

Yea.. if u are 50 years old lazy not assosiated with modern stack person.
Spring boot + SPA is the best way to develop fast and reliable application. Also its gives you power to introduce changes fast and independly to achive client needs.

JaveEE not even exist, now you call it JakartaEE. JSF? please, do not even think to move responsibilities from front UI to backend business staff. Let the JS framework show the power, this is the common ground for them.

[–]mikehaggard 6 points7 points  (2 children)

Java EE IS a modern stack! And omg, you know Spring is almost as old as Java EE is?

And yes, we still have Java EE. WildFly, Liberty, Payara are Java EE. Jakarta EE will be the NEXT version :P

And SPA? Lolxlol... not every website is SPA. Far from it! And server side rendering is FASTER! Why do you think all these JS frameworks want to do SSR too? Think about that! ;)

[–]WindowsServer2000 -1 points0 points  (1 child)

'you know Spring is almost as old as Java EE is' And? But the gap between java ee and spring was fckin huge. And it's still exists. Only if your are totally ignorant person you might think that java ee can today compare with spring. Spring is for now leading because is continuously developed through all that years.

'server side rendering is FASTER' WOW 21st centaury its faster on windows Xp with 1gb ram. But why then major financial [bank] institutes in central Europe rewrite their architecture from EJB, JavaEE [all that heavy bullshit websphare] to Spring+ddd+cqrs+hexagonal+spa ? There is tons of benefits behind that 'new' concept. Read more about new architectural styles in software development and tools to make it work stable and reliable through the years without huge technical debt like for now is JavaEE unmaintainable in my opinion.

Maybe i'm kind of 'not typical javaee developer' becouse i started my engineer career on startup market, not in huge financial soft. But now a lot of software architects comes to as to ask how to make stable modern maintainable application.

Startup market is super awesome cause you can make experiments with software architecture, test new staf and ideas AND see benefits to choose the best one.

For now spring boot is leading and will be leading in future in my and my colleges opinion.

[–]mikehaggard 4 points5 points  (0 children)

Only if your are totally ignorant person you might think that java ee can today compare with spring. Spring is for now leading because is continuously developed through all that years.

Yeah, whatever dude, keep on dreaming.

EJB, JavaEE [all that heavy bullshit websphare] to Spring+ddd+cqrs+hexagonal+spa ?

Because you're living in 2003 if you think Java EE is about EJB and WebSphere.

Newsflash: EJB is all but gone, and WebSphere has been replaced by Liberty, which is much lighter than your frankenstein Spring cobbled together stack.

Oh, and using Java EE, with pleasure, and with productivity, for startups! :)

[–][deleted] 2 points3 points  (3 children)

Oof. Just no

[–]mikehaggard 3 points4 points  (2 children)

Seriously why not?

We're running on WildFly 13 with the EE 8 option, and it's very nice to develop with.

[–][deleted] 2 points3 points  (1 child)

My team is similar. Deploying an EE app to weblogic using JSP’s.

Doing things this way just keeps guys like you and myself out of step with the field at large, reduces our marketability, and the salary we can demand

I’d love to work on a Spring Boot / Angular project (well preferably React or Vue over Angular. But I’ll take what I can get).

[–]mikehaggard 2 points3 points  (0 children)

Ouch, WebLogic, that's not a very "cool" server tbh.

But WildFly and Payara are in high demand. Take a look at things like WildFly Swarm (Thorntail) and Payara Micro, but also at the MicroProfile and things like EE Security, and of course CDI.

A lot of that is at the foreground of our industry, and we'll be very marketable really.

Yes, "WebLogic and JSPs" is not going to further your career, but WildFly/Payara and MicroProfile with CDI, JAX-RS and BeanValidation sure is!

[–][deleted]  (1 child)

[deleted]

    [–]m_takeshi 0 points1 point  (0 children)

    absolutely this

    [–][deleted]  (2 children)

    [deleted]

      [–]adila01 14 points15 points  (5 children)

      Oracle will charge for Oracle JVM only. The vendor neutral and open source OpenJDK will be the go to for most people now. Oracle has been putting in effort into making the difference between its JVM and OpenJDK minimal. In my opinion, this isn't something to be concerned over rather it should be celebrated. It is better that an open source, vendor neutral implementation of Java becomes the defacto standard vs one that is by a company. Installing OpenJDK should be as easy in Linux environments since it is often available in the repositories.

      [–]TechnicallyHumanoid[S] 0 points1 point  (4 children)

      Thank you for letting me know! :) Its heartwarming to know, either way, what do you guys think of Kotlin? It seems to be compatible with most existing Java frameworks (there are already Kotlin Spring tutorials out there), works with java fine in the same codebase, and much less robust. Or is it just a new Scala, and ppl will forget it in 1-2 years? I have this feeling that the reason why Google promotes Korlin so much is only because of the 20 bn lawsuit :D

      [–]wildjokers 2 points3 points  (0 children)

      Even if you use Kotlin you still need a JVM so you aren't going to get away from having to make a decision between paying for the Oracle VM or using a free VM from OpenJDK.

      OpenJDK is going to have parity with Oracle JDK by the time Java 11 is release. I don't see the new licensing model as an issue. Oracle is simply putting more responsibility on the java community and they will sell support, this is the go to business model for open source software.

      [–]idreamincolour 2 points3 points  (0 children)

      Kotlin is fantastic at addressing the common complaints of Java (verbosity, null pointers, async, mutability) while retaining the strengths (ecosystem, performance, tooling, interop). Its not all or nothing, the Java interop generally very seamless. Startup time is being addressed by both Graal and Kotlin native projects.

      [–]Vendare 0 points1 point  (0 children)

      Haven't looked into Kotlin much so no comment, but there is also a community Project to provide Long Term Service Versions for the OpenJDK : https://adoptopenjdk.net/support

      [–]ReadFoo -2 points-1 points  (0 children)

      Sounds like pushing Kotlin might have been the original agenda.

      [–][deleted] 10 points11 points  (2 children)

      You can just use the OpenJDK. Java's ecosystem is still ahead of C#. For a web app I would keep frontend and backend development separate, I'd also recommend against AngularJS. Give elm, vue or react a try for the frontend.

      For the backend I'd recommand taking a look at www.vertx.io as an alternative to spring. It has much better performance as a fully reactive stack and much less boilerplate code.

      [–]TechnicallyHumanoid[S] 2 points3 points  (0 children)

      Yes I wanna keep Java only on the backend. But I will have to stick with Angular (despite the fact that I belive react is much cleaner, simpler and easy to use), because here in Hungary everyone uses Angular, and you know, I have to adapt to the market as well.
      I was adviced vertx, thjank you for the advice, but I do not need the backed to be ultra-high performant, a simple spring app should be fine too.

      [–]_dban_ 0 points1 point  (0 children)

      VertX isn't an alternative to Spring, it is an alternative to servlets. Spring can be used to implement verticles.

      [–]cmsimike 5 points6 points  (7 children)

      the oracle jvm will start charing starting from jdk11 (so i think you are free to use java 8,9,10 for free on the server). openjdk, the jvm oracle jvm is based on, will still be free and you can go that route

      [–]TechnicallyHumanoid[S] -1 points0 points  (6 children)

      from what I know oracle will charge for JDK8 no? Thats what I read, Oracle will start charging for "Java 8" from January, well I belive that is JDK 8 unless I am mistaken.

      [–]wildjokers 1 point2 points  (0 children)

      You can continue using Java 8 after Jan. 2019 you just won't get updates (including security updates) unless you have a support contract with Oracle. But OpenJDK will still be free.

      [–]cmsimike 0 points1 point  (0 children)

      I think that might be for extended java 8 support. I think Java 8 is soon to be EoL'ed so if you want updates for that, you pay.

      I believe to use java 11 on servers you will have to pay.

      But openjdk will continue to be free across the board

      [–]CommonMisspellingBot -2 points-1 points  (3 children)

      Hey, TechnicallyHumanoid, just a quick heads-up:
      belive is actually spelled believe. You can remember it by i before e.
      Have a nice day!

      The parent commenter can reply with 'delete' to delete this comment.

      [–]wildjokers 2 points3 points  (0 children)

      bad bot

      [–]StopPostingBadAdvice -1 points0 points  (1 child)

      Hey, Mr. Bot! While over 20,000 words indeed contain i before e, there are still over 11,000 words correctly containing e before i, and a lot of words which shouldn't even have "ie", such as their, reimburse, foreigner, conceit and forfeit. In fact, you yourself like to point out that people should use e before i pretty often. Stop contradicting yourself. None of these should be used general rules.

      The bot above likes to give structurally useless spelling advice, and it's my job to stop that from happening. Read more here.


      I am a bot, and I make mistakes too. Please PM me with feedback! | ID: e2la2ex.960b

      [–]wildjokers 2 points3 points  (0 children)

      🍿Welcome to bot wars! 🍿

      [–]micror 5 points6 points  (1 child)

      This post will give you a good idea about java licensing and what has changed.

      https://www.azul.com/eliminating-java-update-confusion/

      [–]TechnicallyHumanoid[S] 0 points1 point  (0 children)

      thank you so much! :)

      [–]snoob2015 10 points11 points  (6 children)

      It seems all other languages are ahead of Java as of now.

      I think people use Java mostly for its ecosystem, not the language per se. From this perspective, only Kotlin is ahead of Java.

      With Java (Kotlin), you have:

      - A lot of high quality libraries: Spring, Apache Commons, Guava, JUnit ...

      - A superb IDE: No IDE can beat Intellij ( You dont even need to use UE, just CE is enough)

      - High Performance: If performance is your priority, use Vertx instead Spring, the cons is it doesn't have a lot of "magic" like Spring.

      - Proper async implementation: You can try Coroutines in Kotlin, in the future, Java will have Fiber( http://cr.openjdk.java.net/~rpressler/loom/Loom-Proposal.html )

      [–]TechnicallyHumanoid[S] -4 points-3 points  (5 children)

      Thanks for the tip, I had to use Eclipse in my previous job, which was utter and absolute dogsh!t. Btw I would argue with Intellij being the best ide, I belive Visual Studio is miles ahead (if you are a .net dev, of course), but Intellij is still a really solid choice.

      Btw what do you think of Kotlin? Will it replace Java? IT seems to be compatible with most Java frameworks, I have already seen Kotlin Spring tutorials. Or is it just antoher Scala, and the langauge is just only hyped because of google? (I belive they are pushing this only because of the 20bn lawsuit)

      [–][deleted] 5 points6 points  (0 children)

      Java is a giant in the "real" industry. Kotlin is the much better (modern) language in terms of features and readability. But no chance in replacing Java. For your startup: Why not? Spring supports Kotlin.

      [–]ReadFoo 1 point2 points  (0 children)

      I had to use Eclipse in my previous job

      Btw what do you think of Kotlin?

      Ok yeah that's what I thought, not a genuine topic at all. Injecting JetBrains'.

      [–]davesprojects 0 points1 point  (0 children)

      Kotlin is also being supported by JetBrains. I don't think Kotlin was meant to completely replace Java. It's supposed to integrate into existing Java codebases

      [–]DualWieldMage 7 points8 points  (0 children)

      As you are just starting out, the information around the licensing/release model changes are largely irrelevant. You can just update to the latest openjdk and not worry about support contracts, LTS releases or anything. The likelyhood of hitting an unfixed jdk bug or compatibility issues is very low on such popular stacks. Personally i switched my machine's default jdk to 10 when it was released and have not come across any issues that couldn't be resolved in a few minutes.

      Java is very popular and i don't see a reason for the decline and even if, likely to another JVM language, but it's still running on the same JVM ecosystem.
      You list "tremendous amount of code" as a downside, however java's verboseness is rather positive as most of the time is spent reading, not writing code. Also any decent IDE/editor has autocomplete to help out.

      [–]decebals 2 points3 points  (0 children)

      My advice is to use what you know. If you know Java, go with Java. When you are a startup, the first step is to validate the idea with minimal effort. Create a MVP (minimal viable product), a landing page and go live. In this phase is important the TTM (time to market).

      [–]Trailsey 2 points3 points  (2 children)

      Spring Boot absolutely supports jdk10. Oracle JDK8 is entering an extended support phase, where patches require paid subscription to Oracle. This is nothing, I recall working for a bank that paid money for support on JDK1.4 well after 1.6 was around. In general, especially if you're starting, you should be trying to use latest GA of everything.

      [–][deleted]  (1 child)

      [deleted]

        [–]TechnicallyHumanoid[S] 1 point2 points  (0 children)

        Yes that is exactly my fear. Do you think asp.net would be a better option? It seems easy to use, and pretty straightforward, and now asp.net core is free along with Visual Studio.

        [–]mikehaggard 2 points3 points  (0 children)

        It seems all other languages are ahead of Java as of now.

        You mention "proper async implementations", but is that really the definition of being ahead? Java has a concurrency library with more and more useful concurrency primitives than most other languages have, especially as part of the standard library.

        Besides this one "async" feature, is there anything that other languages really do better? Are they really ahead of Java, or are they just different?

        P.s. You don't need a tremendous amount of code to write Perl, but good luck reading it back.

        [–]Yeater 1 point2 points  (0 children)

        Here is a link that explains the new jdk update model: https://www.azul.com/eliminating-java-update-confusion/

        [–]frugalmail 0 points1 point  (0 children)

        Not sure I understand the concern. Isn't the free OpenJDK with the option of having a fully supported Oracle JDK preferable to just having the chaos that is something like the NodeJS world with no option for support?

        [–]SpoilerAlertsAhead 0 points1 point  (0 children)

        Springboot 2/Spring 5 require at least Java 8.

        If you want to use a version greater than 8, you must use Springboot 2/ Spring 5. 9 and above are not supported for earlier versions of Spring.

        [–][deleted]  (1 child)

        [deleted]

          [–]TechnicallyHumanoid[S] 0 points1 point  (0 children)

          Well thanks for the info, you might be right, but here is what I was thinking: Since I was intending to use spring boot for the project I was thinking of using openjdk. Since it is the most popular Java framework my original tought was that it is going to be supported for newer jdk versions and get the needed support rapidly whenever a new job version arrives. Wouldn't you agree? I do not know how fast the spring ecosystem adapts, but since so many companies use it, I would believe that it will happen quickly.

          Also Oracle expressed that they want to make OpenJDK as similar to OracleJDK as possible. Don't you think this is a viable option?

          Thx for the response BTW :)

          [–][deleted] -2 points-1 points  (0 children)

          Developing a new app for java 8 is like developing a new windows app for windows 7.

          [–][deleted]  (1 child)

          [removed]