This morning I got the following email from a Java developer: “It seems you are doing less Java and more web development every year.” This got me thinking, and I decided to write this blog.
Am I still a Java developer after 17 years of using this language? I certainly am. But in today’s world using just one programming language is almost impossible unless you’re willing to limit yourself to the server-side development. I’m not saying this is bad – it’s a huge field for never ending self-education and research. Even from the career perspective becoming an expert in a specific Java field can put bread and butter on your table for years to come. For example, Java experts specializing in performance tuning can charge several times more than a typical Java developer. Some people become experts in security or concurrent programming, which allows them to eat an omelet with truffles for breakfast daily.
But 95% of Java developers are doing more or less routine work, and learning other languages and tools can bring some excitement in their lives and make them more competitive in the job market.
While Java is the server-side king, HTML/JavaScript/CSS (a.k.a. HTML5) rule on the client. You can use HTML5 for creating a cross-platform UI for desktop and mobile applications. People use a variety of languages and frameworks to develop Web applications that we use daily. If you already know Java, why not come out of the closet and explore the huge and ever growing HTML5 world?
Traditionally many Java developers look down on JavaScript developers with a false assumption that real development is happening only in Java. I can reveal a secret: this is wrong. JavaScript is as close to the Web what as C language is to the hardware. Just look at this long list of compilers from different languages that generate JavaScript. In our company we use Google Dart as a way to produce JavaScript. Next year we’re planning to switch to programming in the new version of JavaScript (EcmaScript 6 spec will be finalized this summer).
Lots of popular IDEs offer great support for developing and debugging JavaScript. Every Web browser comes with a developer tool allows you to debug JavaScript and monitor everything that goes over the wire during the runtime. The tooling of a modern JavaScript developer has everything that Java developers are accustomed too:
node.js – JS framework plus a runtime for all development tools listed below
npm – node package manager used for installing and managing development tools
bower – package manager for the application dependencies
grunt – a build automation tool
yeoman – a scaffolding tool for generating the initial structure of an application for various frameworks
I teach JavaScript classes for Java developers several times a year. A typical feedback is “I thought JavaScript is a toy, but it’s a serious programming ecosystem worth learning and mastering”. And this is what I do while remaining a Java developer.
Not many of us can afford the luxury to be highly proficient in only one programming language. Most of the languages on the surface if not the same then at least are not really exciting. The interesting things begin when you start diving deep, though it has nothing to do with vast majority of the business tasks.
What you are forgetting to say is that you still can use Java to write web apps.
In theory, but not in practice.
This is just not theory. It s practical. We ve been building with Java on the client for years now using GWT.
Even inside Google GWT is being used in some critical apps.
I mentioned it a couple of times in your blog bug u politely ignored it. Which is your right. But to me you are just passing wrong informations around.
Just to quote your own book.
“Take the Google framework, GWT, which allows developers to write code in Java by auto-generating the JavaScript code. Writing code in one language with further conversion and deployment in another one is a controversial idea unless the source and generated languages are very similar. We’re not big fans of GWT, because after writing the code, you’ll need to be able to debug it. This is when a Java developer meets a foreign language: JavaScript.The ideology and psychology of programming in JavaScript and Java are different. A person who writes in Java/GWT has to know how to read and interpret deployed JavaScript code. On the other hand, using TypeScript or CoffeeScript to produce JavaScript code can be a time-saver”
Then on the other hand you go ahed and praise Dart:
“Unfortunately, developing an application in JavaScript is not overly productive. Some people use CoffeScript or TypeScript to be converted into JavaScript for deployment. We are closely watching the progress of Google’s new programming language called Dart, which is a compiled language with an elegant and terse syntax. Dart is easy to understand for anyone who knows Java or C#. Although the compiled version of Dart code requires Dartium VM, which is currently available only in the Chromium browser, Google created the dart2js compiler, which turns your application code into JavaScript in seconds, so it can run in all web browsers today. Google also offers the Dart IDE with debugger and autocomplete features. You can debug Dart code in the Dart Editor while running generated JavaScript in the browser”
I personally dont really see the difference between what s Dart is doing and what GWT has been doing for years.
For Java Devs GWT should be the natural choice. Instead of saying that you bring people to think there is no way to write HTML5 apps in Java.
If GWT makes you productive, then use GWT. I prefer using a language that’s closer to JavaScript.
Thank you for reading my blogs. Over the years new tools/languages are being introduced. So don’t be surprised if next year I’ll write that Dart is not the best choice.
BTW, the team that develops AngularJS decided to use TypeScript in the new version of this framework. So let’s keep our options open. 🙂
Please note that Angular2 is using newer versions on TypeScript 1.5+, https://github.com/Microsoft/TypeScript/wiki/Roadmap . It develops rapidly and with both Microsoft and Google, has a chance to become de facto standard ES6 JavaScript implementation.
Also in addition to GWT there is Vaadin – it’s better cousin fairly popular in Europe. I tried it a few years ago and liked it a lot.
As a matter of fact, I had a lot of new things Java to learn from Farata’s “Modern Web Application Development with AngularJS and Java”. To be honest, I took the course with the only intention of diving deeper into Web Sockets and Java 8, after attending Yakov’s online Java lessons. I found exactly what I expected, plus scratching the surface of JavaScript programming was very enjoying as well and indeed helped me find a new job. Only now I understand how it makes sense to have both AngularJS and Java in a single training program. I still wonder though if it wouldn’t have been better, at least for Java developers having no previous experience with JavaScript, to start the course with the development of the back-end.
so, who has the power in years to come? browser vendors, desktop os vendors, mobile os vendors??
Which framework/library do you prefer for Ajax operations with HTML5/CSS3 apps?
We don’t select a library just for AJAX operations. You can do AJAX without any libraries. For internal development we use AngularJS and AngularDart.
Hi Yakov,
I am also a Java Web Developer and also faced with consistent learning of Javascript frameworks and front End technologies. It’s fine for the moment but I am aware that these skills will be outdated very quickly and will be faced with more learning in years to come. I always wonder if I’ll master any of the skills in a constant wave of change of technologies.
When I compare with the amount of technologies that I learn when compared to say, Business Intelligence (BI) developer who is using some proprietary tools, I feel quite amazed. I find the amount you have to learn and master, say a BI tool is quite limited and will be very much easier for a Java Developer. I also find the earning/salary potential to be higher for the BI/Specialised Tools developer as the supply is quite limited in number. Would you recommend any such tools/niche skills?
Thanks,
Aubyn
Java is a great base language. If you want to have stable high rates, invest your time in improving performance by fixing Java concurrency bottlenecks. The other area is applications’ security. But you have to become really good at it.