Skip to main content

GWT Training for Java Developers with GWT Boot

I'm always a fan of "one language solution with Java to rule them all", here are sofar my opinions about Polyglot Programming:
Until today nobody can excite me about Polyglot Programming. My points are getting another big support after I read the "Rise of Polyglot at Netflix" presentation which says that Polyglot is expensive, also for company in the category of Netflix. At the end of the day we need to be productive. Our applications should have a high quality standard and the total costs (TCO) of our software development should be manageable and low. To be able to reach this goal we have Java with Spring Boot or JakartaEE on the server-side which offers REST interfaces. So logically for user interface development on the client-side I always bet on GWT which is a Java to JavaScript compiler / transpiler. In this architecture you will have Java on the both side, removing the need of Polyglotting.

In this week I carried out a training for seven internal Java developers, who are experts in Java but don't really have a real training in GWT yet. Within two days I managed to get through following slides http://bit.ly/2IKg9bg:
  • Introduction to GWT
  • Your first GWT App
  • UI Frameworks for GWT
  • Dependency Injection with Gin and Dagger2
This is also the first time that I could use GWT Boot to be able to let them doing their tasks. GWT Boot Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop-shop for all the GWT and related technology that you need without having to hunt through sample code and copy paste loads of dependency descriptors. For example, if you want to get started using GWT and Domino UI for your Material Design and Elemental2 just include the spring-boot-starter-ui-domino dependency in your project, and you are good to go. Here are what I found using GWT Boot sofar:
  • To show the developers how to create an example project with Maven and GWT Boot is quite easy for me. The pom.xml is very short, very easy to understand and to extend. No need to let them copy&paste a lot of Maven dependencies in their pom.xml project.
  • The idea of generating the real GWT module file from module.gwt.xml is a bit difficult to understand. But this is not a show stopper.
  • The start would be a lot more easier if I could offer them something like Spring Boot Initializr. It is definitely a must to also offer GWT Boot Initializr for GWT community.
  • All in all it is great to have GWT Boot Starters. It is definitely easier for Java developers to start their own GWT project with their chosen UI framework, as you have lot of choices for UI frameworks in the GWT environment.
Second thing which is actually always a disadvantage of GWT - at least I always think it was - is the documentation and here are my findings:
  • Wow, the documentation of GWT is actually really good, especially the "core" functionalities of GWT. I could find every single core aspects in GWT easily: 
    • Compiler / transpiler
    • Emulated Java Runtime
    • Interoperability Layer to JavaScript (JSNI and JsInterop)
    • Development artifacts:
      • HTML host pages
      • Standard directory and package layout
      • GWT modules: units of configuration
  • I have to admit that the documentation of tools and UI component frameworks is not good. But as I only use GWT Boot, everything is quite simple. No need to install plugin, just Maven. So the one page below is the only tools I need to develop with GWT productively.
Tools for GWT development
Very interesting to hear from the Java developers is what kind of UI component frameworks are interesting for them and easy to understand for them. Here are the categories of UI component frameworks which can be used in GWT:
  • Widget-based (Standard GWT, GWTBootstrap3, GWTMaterialDesign, ...)
  • Elemental2-based (DominoUI, Elemento, VueGWT, GWTReact, React4Java, ...)
  • Canvas-based (I only show the idea and an example: Animatron)
Almost all of them like the idea of Widget-based components and from Elemental2-based they prefer Elemento and DominoUI which is also based on Elemento. One developer who already knows React could not directly understand the idea of GWTReact and VueGWT. All other Java developers are not fond of the idea working with VueGWT and GWTReact. It seems that the basic idea of VueGWT and GWTReact is too different in compare with Java UI components framework like Swing or JSF.

I still have one day with the training in which I will talk about advanced topics like: 
  • Interoperability with JavaScript 
  • Client/Server Communication
  • GWT Architectural Patterns
  • GWT Best Practices
But sofar my conclusion is that using GWT for Java developers is a great idea. You don't need to introduce new tools and IDEs. No new language like JavaScript or TypeScript is necessary, so that you as a Java developer can be very productive directly in the beginning, doing programming for the Web browser within your familiar development environment. To all Java developers: you could participate to lower the TCO of your software development costs. With GWT you don't need to stay on the server with Java, you can also have fun on the client with your Web browser.

Enjoy my slides: http://bit.ly/2IKg9bg!

This article is now published by DZone: No Polyglotting: First Experience with GWT Boot

Comments

It is very nice blog you share with us. Thanks for sharing this valuable blog. If you want learn Java Training Courses in Gurgaon, india. Visit us.
Harminder Singh said…
This comment has been removed by the author.
Dipanwita said…
Great blog. Keep posting. java training in chennai
roman said…

SEM SERVICES
I am fully satisfied with the information you have posted. Good job. Keep posting:)
CUSTOMIZED ERP SOLUTIONS
Unicsol said…
Nice Content
Unic Sol is the best java training in Hyderabad with job placements. Along with java training full stack, mean stack, angular & testing tools training is provided by industry experts. We are the best java training in Hyderabad.
Rubina said…
Really Great Post & Thanks for sharing.

Oflox Is The Best Airtel Fancy Numbers Seller.
jenani said…
I am really enjoying reading your well written articles. It looks like you spend a lot of effort and time on your blog. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work.
Java Training in Chennai

Java Training in Velachery

Java Training inTambaram

Java Training in Porur

Java Training in Omr

Java Training in Annanagar

kalish said…
Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging.
Python Training in Chennai

Python Training in Velachery

Python Training in Tambaram

Python Training in Porur

Python Training in Omr
Python Training in Annanagar
Thank you so much for your efforts for this valuable blog, keep it up for more updates. Visit Ogen Infosystem for professional website designing and SEO Services in Delhi, India at an affordable price.
Web Designing Company in Delhi
Shayari Night said…
Great Post, Nice to read it Btw. Webocity Technologies is best website designing company in delhi, Best Website development company in Delhi, We Offer Best Digital Marketing services in Delhi.
I read your post and I really appreciate your efforts and research for this. This is very useful information.
Ride sharing app development cost
iglanafil said…
Thank you for making our time useful. We need to share the best tech-related news with everyone.
Online platforms that allow online buying and selling are created through e-commerce app development, which combines simple user interfaces with necessary features to create a smooth and effective online shopping experience. A strong e-commerce app is required for business success. At Ampro TechValley, we take pleasure in being the industry innovators in creating customised, user-focused apps that ensure not only growth but also a quicker path to success. We stand out for our commitment to scalability, ease of use, and unique specialities. We are the ideal partner for everything from unique designs that present your brand to essential characteristics that improve the user experience. Say goodbye to difficulty and go with Ampro TechValley, the best ecommerce app development company for an e-commerce project that will quickly move faster your own success story.

Ashish Thakur said…
Are you seeking a Best Java Training Course in Noida with Placement Assistance that not only provides comprehensive learning but also ensures placement assistance? Look no further than APTRON Solutions. Renowned for its excellence in IT training, APTRON Solutions offers a cutting-edge Java course that equips you with the skills and knowledge necessary to excel in the competitive tech industry.
Anil said…
APTRON stands as a beacon of excellence in the realm of Java Full Stack Institute in Gurgaon. The institute prides itself on its holistic approach, equipping students with both the theoretical knowledge and practical skills necessary to thrive in the competitive IT landscape.

Popular posts from this blog

Software Development Macro and Micro Process

If you think that in year 2012 all companies which produce software and IT divisions in our world have already their optimized software development process, you are wrong. It seems that we - software architects, software developers or whatever your title is - still need to optimize the software development process in many software companies and IT divisions. So what do you do if you enter a software company or IT division and you see following things: 1. There is a perfect project management process to handle all those development of software but it is a pure project management without a context to software development. So basically you only take care of cost, time, budget and quality factors. In the software development you still use the old fashioned waterfall process. 2. From the tooling point of view: you have a project management planning and controlling tool but you are still in the beginning of Wiki (almost no collaboration tool) and you don't use issues tracking sy

Why "Polyglot Programming" or "Do It Yourself Programming Languages" or "Language Oriented Programming" sucks?

Last year we saw the launch of a new Web programming language Dart - Structured Web Programming from Google. A very interesting approach to support web application development. Not so long after Go, Groovy, Ruby, Scala, << name your DSL here >> ; we see Dart. Is it a good thing to have at least one programming language to solve one problem? The answer is, like we already know, it depends. Some important backgrounds you should know about the multi programming language paradigm are following: 1. You can read Martin Fowler article about language oriented programming with language workbenches which enables you to write small programming languages easily. In this article I see everyone writing their small languages, everywhere. In this concept we see DSL (Domain Specific Language) as the future of our programming activities. Source: http://martinfowler.com/articles/languageWorkbench.html 2. Neal Ford talked about Polyglot Programming, combining multiple programming language

Creating Spring Bean dynamically in the Runtime

In my training someone asked me whether it is possible to create an object (a Spring Bean) dynamically so you can choose which implementation you want to have  in the runtime . So at the compile time you don't know what object actually should be created yet. The application should decide what object to be created based on a property file . 1. We create an annotation so we can mark the method which should be able to create the object dynamically: ... package your.package; ... @Retention(RetentionPolicy.RUNTIME) public @interface InjectDynamicObject { } ... 2. Use the new created annotation in your method which should be able to create the object dynamically: ... @Named("customerBo") public class CustomerBoImpl implements CustomerBo { ...     @Override   @InjectDynamicObject   public Customer getDynamicCustomer() {         return this.dynamicCustomer; } ... 3. Write an aspect with Pointcut and Advise which change the ob