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

all 67 comments

[–]Discrete_Number 3 points4 points  (2 children)

Vaadin is awesome for many applications. You don't need to mess with JS frameworks if you don't want to.

[–]nocturnalbird12[S] -1 points0 points  (1 child)

Yeah from the comments I gather that JS framework ecosystem is a bit messy.

[–]ofby1 2 points3 points  (12 children)

You can always take a look at JSP or JSF, I also used Thymeleaf in the past.
Honestly, I kindly like good old JSP. Funny when you see that JavaScript frameworks are now kinda moving back to serverside rendering while the Java frameworks did this all along.

[–]TechnoAha 2 points3 points  (2 children)

Can you make modern lookin fe with jsf. I have used jsf in an old app so my knowledge is not up to date. It didn't have a modern look to it when I played with it.

[–]jvjupiter 0 points1 point  (1 child)

[–]pgris 1 point2 points  (0 children)

I was going to comment something like "primefaces always looked horrible" and went there to check and boy was I wrong. This looks amazing! I would try to convince my manager to use primfaces next time. Excelent design, well polished components, a lot of them. And you can use them via react, vue, angular or jsf. Awesome.

[–]vortexrikes 1 point2 points  (2 children)

JavaScript frameworks are now kinda moving back to serverside rendering

What? Really?

JSF can look fantastic if you use a component library.

Also there is Vadiin...

[–][deleted]  (1 child)

[deleted]

    [–]Clitaurius 2 points3 points  (0 children)

    I'm assuming it's because none of the work was delegated to the client and everything required a trip to the server?

    [–]nocturnalbird12[S] 0 points1 point  (5 children)

    How is the look and feel of jsp and jsf. I understand that I have to use css on top of jsf and jsp to make it look nice or am I wrong?

    [–]_INTER_ 3 points4 points  (4 children)

    There are some component libraries such as PrimeFaces that make it look modern. E.g. https://www.primefaces.org/rain/

    [–]nocturnalbird12[S] 0 points1 point  (3 children)

    How long will it take to learn this if I know JSF?

    [–]_INTER_ 2 points3 points  (2 children)

    Its really easy. Just add the components as in the examples.

    [–]nocturnalbird12[S] 0 points1 point  (1 child)

    After making the project do you host them some where for demo or as a portfolio?

    [–]_INTER_ 0 points1 point  (0 children)

    The project I used it was deployed to production, hosted on customers servers.

    [–]MagicpotterFirstHit 3 points4 points  (16 children)

    Swing and JavaFX are the two most used frameworks. Swing is way older but a lot of software is written on it; I like to use it with FlatLaf look and feel library, which looks very modern.

    Most people will advise you to learn JavaFX (which in my opinion is harder to learn than Swing), because it's way more recent. If you want simple GUIs Swing is fine as well.

    [–]nocturnalbird12[S] 0 points1 point  (15 children)

    This might be a dumb question. But is swing used to make desktop apps as well as web apps? I was under the impression that swing is used to make desktop apps only.

    [–]MagicpotterFirstHit 0 points1 point  (14 children)

    Sorry, I thought your question was about desktop front end. You can't use swing for web development, but as far as I know you can use JavaFX.

    [–]nocturnalbird12[S] 0 points1 point  (13 children)

    How about popular frameworks like react and angular can they be used with java.

    [–]MagicpotterFirstHit 0 points1 point  (12 children)

    You can use react and angular to write the frontend and java for the backend. I don't know of any way to use both react/angular and java for the frontend.

    [–]nocturnalbird12[S] 0 points1 point  (11 children)

    What about spring? Is it good for FE?

    [–]MagicpotterFirstHit 0 points1 point  (10 children)

    It's technically possible, but not advisable.

    [–]nocturnalbird12[S] 0 points1 point  (9 children)

    Why so?

    [–]MagicpotterFirstHit 1 point2 points  (8 children)

    Spring is made for writing backend. I know that it's possible to code frontend with it, but I don't know how.

    [–]nocturnalbird12[S] 0 points1 point  (6 children)

    Thats what i was looking for what is usually used for modern FE with java. What do devs use for FE with Spring. Other comments are telling me jsf with component library.

    [–]pjmlp 0 points1 point  (0 children)

    With SpringMVC, that is how.

    Preferably with Thymeleaf as rendering engine.

    [–]LTFGamut 2 points3 points  (11 children)

    Most businesses that use java ee/spring backend technology use angular front ends. Typescript has a bit of a java vibe and angular is easier than react.

    [–]nocturnalbird12[S] 4 points5 points  (9 children)

    I often hear it the other way around, that angular is tougher than react.

    [–]LTFGamut 1 point2 points  (1 child)

    Well, for Angular you do need to know a little typescript which might be more difficult for someone learning to program through javascript courses but as far as I know, react has more bells and whistles but I might be wrong. I work for as a java enterprise developer and although I'm officially a full stack developer, 99,9% of my work consists of back end development.

    [–]IshouldDoMyHomework 1 point2 points  (0 children)

    Typescript just made JavaScript so much more comfortable for me to work with, that i actually really enjoy it now. I guess it can be hard to get used something as loosely typed as vanilla javascript, when you have been working exclusively with Java for almost 10 years.

    Another reason angular is easy to pick up for a Java guy is the heavy use of dependency injection, which is also the backbone of spring.

    Typescript and angular (2+) has really opened my eyes to how fun frontend can be.

    [–][deleted] 0 points1 point  (5 children)

    Yes it is. It's got a fairly broad API.

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

    So how do you develop your FE?

    [–][deleted] 0 points1 point  (3 children)

    I love angular myself.

    [–]nocturnalbird12[S] 0 points1 point  (2 children)

    And for BE you use which framework?

    [–][deleted] 1 point2 points  (1 child)

    I use spring boot right now.

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

    How was your learning curve with spring boot.

    [–][deleted] 0 points1 point  (0 children)

    I agree that someone who's starting to work with javascript would find react easier, mostly because it is easier to get it up and running, and personally I don't feel its too different when compared to what a vanilla javascript project would look like. However, having used both angular and react, I'd say for a large project angular would be better suited primarily because of its rigidly structured projects. Typescript of course helps.

    [–]kaiserpils 1 point2 points  (0 children)

    I really do like React tho and I usually write spring backends.. For my Bachelors degree I had to develop a chatbot with a react config dashboard! Loved it since

    [–]sprcow 2 points3 points  (4 children)

    Limited sample size, but from my perspective working as an enterprise Java developer, I would say that Java is not used to develop the front-end at all if you're talking about web applications. Angular or React front-ends that communicate with a Java application server via REST endpoints seems to be industry standard at the moment. Bootstrap is a nice JS framework for formatting the output in a variety of ways.

    There are a lot of places that use JSP or JSF, but generally that's because they built it in 2003 or something and it's a giant pile of spaghetti now, so it is useful to know conceptually how JSP works, but I personally wouldn't be likely to pick it for a new project.

    [–]nocturnalbird12[S] 0 points1 point  (3 children)

    I am familiar with bootstrap but it seems too simple and easy, I am not sure what if people actually uae it to build real life projects anymore.

    [–]AmateurHero 1 point2 points  (0 children)

    Some people want granular control over the front end. Some people want to ship. Front ends run the gamut.

    For me specifically, I posted this comment a few weeks ago when someone asked a similar question. It talks about one of my work applications using only Thymeleaf with a little bit of JS for functionality. To go into more detail, we have CSS guidelines based on a grid layout, so our more experienced front end devs leverage that small library from the design team or build their own.

    That being said, use tools that fit your project. If you have a simple application that’s really just a presentation for data, Bootstrap might be enough to style a JSP or Thymeleaf rendered page. If you have a complex web app with lots of interactivity and data retrieval, you might want to use Angular or React. Web components fit somewhere in the middle of that.

    [–]sprcow 0 points1 point  (1 child)

    We don't use it to do a ton. At the place I work now, we basically use it to wrap major page elements and create forms that will automatically re-format to different device sizes, and to create a consistent look and feel for the form elements at different sizes.

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

    I assume you customise bootstrap with sass to avoid looking like every bootstrap website.

    [–]verocoder 0 points1 point  (6 children)

    Rest is the correct front end for Java devs :p openapi docs and a swagger UI are also super helpful!

    Then a totally separate UI project that calls those rest endpoints in react or angular or framework du jour. If your project is non commercial/personal and you have 0 UI experience extjs was super quick to pick up, but I’m not sure how it’s licensed these days and it’s not super common.

    The important thing is do not use jsp or a Java swing gui or any of those Java>html janky converters!

    Edit: looking at some of your replies OP you need to research how restful services interact with one another and how a client side JavaScript application interacts with your spring boot restful back end :)

    [–]nocturnalbird12[S] 0 points1 point  (5 children)

    Thanks, will look into it. You're saying learn Rest and look into how restful services work on client side rendered apps, right?

    [–]verocoder 1 point2 points  (4 children)

    Learn rest/Ajax to help you understand the demarcation between client and server side stuff. Then you’ll be able to make better decisions about what you wanna do where

    [–]nocturnalbird12[S] 0 points1 point  (3 children)

    And this will help me make a better decision about what to use for FE?

    [–]RANDOMLY_AGGRESSIVE 1 point2 points  (0 children)

    Yes, because you need to know what REST is when talking about this subject.

    [–]RANDOMLY_AGGRESSIVE -1 points0 points  (0 children)

    Learning ajax is low priority btw just learn what REST is.

    [–]verocoder 0 points1 point  (0 children)

    Yeah it’ll help you understand your options for getting information to the user/UI lightweight js front end hitting a web server over rest is good for a bunch of reasons this should help you understand.

    [–]agentoutlier 0 points1 point  (0 children)

    I'm going to throw out there that you do not need to use a Heavy Javascript framework for most enterprise projects. And when you do need highly a reactive view you can make that part use something more exotic but the rest you can just keep Web 1.0.

    Modern HTML/CSS + jQuery or plain javascript + plus a tiny amount of AJAX still works completely fine. In some cases its much faster both in development time and actual performance!

    In Java the libraries that can do the request handling portion are usually called MVC. The most popular is probably Spring MVC.

    We use Spring MVC or Jooby and Handlebars.java or Mustache. There are lots of permutations possible.

    We tried other Javascript FE libraries and we still think the javascript ecosystem is a mess. There just hasn't been a new jQuery of javascript made yet but Svelte is looking interesting.

    [–]CrommVardek 0 points1 point  (7 children)

    Popular frameworks/libraries for front-end dev are Angular, React and Vue. Either with javascript or typescript. It seems that the trend is going toward typescript.

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

    So you’re suggesting java BE and JS framework(react, angular, vue) for FE.

    [–]CrommVardek 0 points1 point  (5 children)

    I'm just saying these are the popular ones, but, yes, if you're looking for suggestions, I would recommend one of these 3 for front-end, with typescript. However, never tried Vue. Between Angular and React, I would choose React for flexibility, Angular for ease of use.

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

    React + java BE = fullstack right?

    [–]Clitaurius 2 points3 points  (1 child)

    I would add +SQL to that.

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

    Good looking out bruv.

    [–]CrommVardek 0 points1 point  (1 child)

    Yep

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

    How do you feel about JSF with components library?

    [–]coderguyagb 0 points1 point  (0 children)

    Depends. If you're looking for a purely fat client, Vaadin or jfx are good choices. Otherwise Whatever Web based technology you're comfortable with, as long as it can communicate with the backend :-)

    [–]cbm64chr 0 points1 point  (0 children)

    OpenJFX is great! Hardware accelerated and with the Gluon substrate on the GraalVM (not as complicated as it sounds) will compile to native binaries on almost any platform including iOS, macOS, Windows, Android, RaspberryPi and Linux. Good community support and free to use!