AngularAngularJSBootsFacesJavascriptJSFSpringUI surveyUncategorizedweb design

UI Survey 2017: Java vs. JavaScript

Recently, I’ve seen a number of surveys covering the popularity of Java and Java UI frameworks. Most surveys show that either Spring or Java EE is more popular. However, they don’t answer two important questions: is Java becoming more or less important? Currently, I’m mostly interested in UI frameworks, so the next logical question is: what is the market share of Java UI frameworks compared to JavaScript UI frameworks?

To my disappointment, I didn’t find a clear answer by researching the internet or by asking the question on Twitter. So I’ve started to gather information myself. That wasn’t easy, so most of the article is based on indirect hints and educated guesses.

Oops!

My first surprise was when I learned about ng2-bootstrap in December 2016. At the time, Angular2 itself was still brand-new. So it won’t surprise anyone that the third-party libraries had a hard time catching up. In other words: At the time, ng2-bootstrap was a promising library, but it still had a long way to go. Compared to BootsFaces, it’s still a tiny library. In early April 2017, it consists of merely 17 components, as opposed to the 74 components of BootsFaces.

Nonetheless, ng2-bootstrap had been downloaded 70.000 times in December, give or take a few. In early April 2017, the download counter even shows 204.000 downloads per month. Compare this to 2.000+ downloads of BootsFaces per month. Oops! Such an unfinished library is 100 times more popular than the fire-proven BootsFaces?

Of course, BootsFaces is one of the smaller JSF frameworks, but even the so, ng2-bootstrap seems to be more popular than all JSF component libraries together. My curiosity was piqued.

Trendscouting

Another indicator of the popularity of a framework is Google Trends. I’ve compared the number of search requests of JSF and Spring MVC:

Comparing the Google Trends of JSF and Spring MVC
Datasource: Google Trends (www.google.com/trends)

Both frameworks seem to be roughly equally popular. JSF used to be much more popular in the past, but it has lost a lot of popularity in recent years.

Actually, the dwindling number of search requests may have a different reason. In 2004, there were three times as many search requests to JavaScript than today. But it’s unlikely JavaScript is used less today. It’s much more likely that developers ask other questions today. Or maybe they simply ask less question because they’ve learned how to work with JavaScript. The same may hold true for JSF. I’m even told JSF is gaining traction again.

Adding Angular and React to the equation

However, adding AngularJS and React.js to the trends analysis changes the image radically. There are 10 times as many search requests for React.js and 20 times as many search requests for AngularJS:

Comparing the Google Trends of Angular, React.js, JSF, and Spring MVC
Datasource: Google Trends (www.google.com/trends)

Again, that might simply mean that there are twenty times as many problems with Angular than with JSF. Plus, the search may be biased by my selection of search keywords. For instance, both Angular and JSF are “topics” of Google Trends, while React.js is categorized as a “JavaScript library”. Spring MVC is merely a search term. So it’s hard to say whether “Spring” or “Spring MVC” is the better keyword to find out about the UI framework of Spring.

Be that as it may, the trends are impressive. Plus, I’m working with Angular2+ on a daily basis. It’s a good framework, not a source of problems. Still, the huge quantity of Google searches may simply mean the developers are still learning how to use Angular. But I believe the trend also indicates that Angular and React.js are more popular than Spring MVC and JSF.

What about other frameworks?

I know that there are countless other UI frameworks, both in the Java realm and the JavaScript universe. I’ve limited my research to these four frameworks because they seem to be the most popular ones. I’ve entered quite a few other frameworks in the search bar. That didn’t change the results significantly, so I didn’t include them in the charts.

Trends of programming languages

Another indicator is the popularity of JavaScript and TypeScript. In many rankings, JavaScript, Java, and C are the most popular languages. Even if the Tiobe index indicates that JavaScript and TypeScript are much less popular than Java: Java is a general purpose language, while JavaScript and TypeScript are still being used almost exclusively in the browser. It’s possible to write server or desktop applications using JavaScript, but if I’m not mistaken, that’s still a small niche.

The last indicator is the strategy of PrimeFaces. Recently, they spend a lot of time developing the JavaScript offsprings of their JSF framework. I gather that has something to do with market shares.

Wrapping it up

For some reason, it’s hard to find information about the market share of Java and JavaScript UI libraries. Such surveys are sparse, and most of them concentrate either on Java or JavaScript. So much of this article is speculation. Nonetheless, I’m under the impression that the JavaScript UI market is five to ten times larger than the Java UI market.

Come to think of it, that’s not surprising. Java UIs are almost always used with Java back-ends. Client-side web application can be used with any back-end. That includes .NET, SAP, databases with REST APIs and even PHP. Plus, JavaScript is the language of choice for web designers.

However, I’m surprised that Angular seems to be so popular in the JavaScript world. Angular specifically targets enterprise applications, and that’s only a small fraction of the JavaScript applications. I reckon much of the rise of Angular and – to a lesser extent – React.js is at the expense of traditional server-side web frameworks.

By the way, that doesn’t affect my commitment for BootsFaces. Even if the estimated community of roughly 10.000 developers is small in comparison, that’s still the population of the village I’m living in. And it’s a lot of fun to help so many developers!


Dig deeper

Java Web Frameworks Index February 2017 by RebelLabs
Spring MVC vs. JSF
Spring MVC vs. JSF vs. Angular vs. React
License of the Google Trends screenshots

6 thoughts on “UI Survey 2017: Java vs. JavaScript

  1. Hi Stephan,

    I just want to thank you. The work you are doing so great, you put some charts that make easily understandable to anyone.

    Thank a lot for your great work again.

    1. Thanks for your kind words. By the way, the link you’ve provided with the comment is not a good advertising for your Java courses. It just shows that you didn’t investigate thoroughly. So I hope you don’t mind I’ve removed the link. I don’t want my readers to be confused with misleading, low-quality content.

  2. Thanks for the insight Stephan. I stumbled across this while doing my own research. I used to develop in JSF many years back – that’s why I called myself as a Java dinosaur. Last year I did a project on Thymeleaf and jQuery, and my young team of developers didn’t really fancy these 2 back then. These days, all people talk about are Angular and React. And here I am, deciding what should I use for my next big project. Backend will be Spring Boot but what should I use for frontend? Should I go for Angular and SPA? or should I go for Thymeleaf + jQuery, or something new like BootsFaces? My project is something like Agoda, so I would think MPA fits better than SPA. Also….I’ve played around with Angular and it’s been giving me quite a number of headaches 🙁

    Being someone who knows both Angular and BootsFaces, what’s your advice? Is it a question of SPA vs MPA in the end?

    1. The two bits of information we can work with is that you’ve got a young team and that you’re writing something like a travel portal. Plus, you’ve got experience with creating UIs that are rendered on the server, but your team doesn’t (or maybe they do, but they just don’t like it).

      The preference of your team is an important factor. If they don’t like the technology, they are motivated less. In the end, that may result in a productivity penalty and – even more important – in a loss of creativity. So whatever you do, take the time to convince them.

      From the customers’ perspective, your application has to be fun. If it isn’t, customers tend to go away in no time. Fun, in turn, means that the application is responsive, fast, looks nice, is easy to use, and so on. Let’s concentrate on “fast” and “responsive”.

      Responsive is easy. You can use either Bootstrap or Material Design. Of course, there are more alternative, but these two are a good starting point. You should also follow a mobile-first approach, at least if you’re targeting customers on the internet.

      Creating a fast application is easier with an SPA. That’s why everybody talks about Angular, React or Vue.js. But it’s also possible to create an SPA with PrimeFaces or BootsFaces. Personally, I believe BootsFaces is a good choice (but take in mind that I’m a regular contributor to BootsFaces, so I’m biased). At work, I use Angular most of the time. Angular is a great choice, especially for applications with an “enterprise touch”. For example, if you need hundreds of forms, you are almost always better off with Angular than with React. On the other hand, many people think React is easier to learn than Angular. If you’ve narrowed your choice down to Angular, Vue.js, and React, check out my interview a Jaxenter.com and the slides of my talk at the International JavaScript Conference Munich.

      Basically, I suggest choosing between BootsFaces or Angular. Angular is a natural choice for a Spring Boot backend providing REST services. BootsFaces (or PrimeFaces with a good theme) allows you to mix the idea of an SPA with an MPA. If your application splits naturally into distinct parts, you can implement each part as a multi-page application and navigate inside each page using the single-page approach.

      As for Thymeleaf plus jQuery: I don’t know Thymeleaf, but from what my co-workers tell me it’s a simple approach that does the trick. However, in 2018 I’d avoid jQuery. Direct DOM manipulation tends to be tedious. In most cases, you’ll love the extra abstraction layer of Angular or React.

Comments are closed.