Adam Bien's Weblog

Upcoming Java EE / Java / Testing / HTML 5 / Persistence Workshops Talks and Events


3 seats left: HTML 5 for Java Developers, Tuesday, April 28th, 2015 and NEW online workshop: Java EE 7 Bootstrap

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Java EE 7 on Java 8 Devcrowd.pl Conference Session Video

Playing with Java EE 7 (async JAX-RS, Concurrency Utilities, CDI, EJBs and porcupine) and Java 8 (method handles) at the 2015.devcrowd.pl conference at 19.04.2015:

The sample app and slides are available for download.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting


3 seats left: HTML 5 for Java Developers, Tuesday, April 28th, 2015 and NEW online workshop: Java EE 7 Bootstrap

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

13th Airhacks.tv Questions and Answers

13th airhacks.tv, or answers for the questions:

Accidentally, I forgot to answer the questions 9 and 10. I will cover them soon, probably in a 13/2 show.

Any questions left? Ask here.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting


3 seats left: HTML 5 for Java Developers, Tuesday, April 28th, 2015 and NEW online workshop: Java EE 7 Bootstrap

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

A Java EE Startup: Getting Lucky With DreamIt

Norman, could you please introduce yourself?

I am CTO and co-founder of dreamIT where we especially built and keep building up an entire gambling platform for a world-wide lottery provider from scratch. Since then I have accepted several key responsibilities, piling up more than 15 years of experience in the gambling and technology sectors. I worked across many gambling verticals including Sports- and Horse Betting, Casino, and Lottery. Through my career I have worked with many of the (world's) leading gambling operators where I developed and deployed strategies, products and solutions across Europe for both B2B and B2C customers.

Until now I have been improving my skill set continuously - especially in the web, mobile and interactive world to build high-performance, scalable and maintainable - but not over-engineered - solutions. I believe that simplicity of a solution ensures protection of investments for the ever-changing requirements in today's fast-paced world and is one of the most important - but almost underrated - challenge in coding. With deep understanding on both B2C and B2B sides of the Gambling Industry, I was driven by my passion to superior systems, excellent user experience and, of course, innovation in the gambling.

What is dreamIT? What are you building?

dreamit.de is a Hamburg-based software engineering company delivering individual software solutions tailored to very specific clients’ needs. We are focusing on large, transaction-based B2C platforms, and we develop all elements of such tailor-made solutions (database-/back end systems, frontend, mobile (iOS/Android)). We consequently use agile software development methods with short sprints and a continuous deployment approach. We have a strong and proven ability to architect, design, develop, implement and operate SaaS solutions. Our senior architects address typical challenges with proven best practices, which enables us to quickly find the right solution for our clients’ needs.

One of our teams' largest projects so far has been the development of an entire gambling platform for a foreign secondary lottery provider from scratch, following the client's very specific requirements. We helped this client to really identify, articulate and document any technical product specific needs, based on their business needs. Strictly following these customer specifications, we built an entire website-/desktop-/admin tool system that currently processes an 8-digit number of transactions each month.

You started straight with Java EE 6. Are you still happy with this decision?

Yes, we are still happy.

How much traffic (peek e.g transactions per second, concurrent users etc.) your application has to handle?

In the lottery business we tend to have quick surges in user traffic, resulting in big peeks. On high jackpots we get about 4000 to 5000 concurrent users.

What about the performance? Is Java EE fast enough?

Java EE is really fast and solid as a rock. Job applicants often say that they've never seen a faster web site before.

Are you happy with Java EE's productivity?

Java EE is great. It doesn't restrict you in anything. We are working domain driven and it seems that Java EE is built for it. You have bean validation, CDI, JSF, which all works very well together. So you can build perfect domain models with very good cohesion. Especially CDI fits well in the whole Java infrastructure, because you can use every visibility as you would without a container. This is a big advantage over classical EJBs, where you need everything public, which should be handled by the container.

We are using the full stack of Java EE only. And we try to avoid third party libraries. Simplicity is our key to success. And Java EE gives you almost everything out-of-the-box, so we can concentrate on business logic.

Any plans to migrate to Java EE 7?

We are planning to migrate to Glassfish 4.1 or even Payara in the next few weeks. Java EE 7 is not the key reason for migration as Java EE 6 is quite cool for us, but our developers are waiting to use "revolutionary" Java 8. In general we try to be up-to-date with our technology stack as soon as possible.

What application servers, tools etc. UI technologies are you using?

We are using Glassfish 3.1.2.2 right now. Our database is mongoDB, our frontend is JSF. The IDE is IntelliJ IDEA. The continuous integration server is TeamCity from JetBrains. Other tools are: haproxy, nginx, hazelcast, SonarQube.

Should architects code?

Absolutely. We think, they work basically for the development team. And developers usually understand code very well. An architect must be present his ideas for the developers in source code. Though they also must be able to do some nice diagrams both for developers and the management. But management compatibility is only a side aspect of the architect's job.

How many developers are working on the application?

Currently we have about 15 developers and the team keeps growing fast.

Are there any pain points with Java EE? What could be simplified?

Unfortunately the CDI spec changed with Java EE 7. Things that were possible with EE 6 don't work any longer. Another problem is Oracle's policy of Glassfish updates. But Payara is a hot candidate to fill the gap.

Will you choose Java EE for the realization of your ideas again?

For sure. The technology is mature, but still let's you do whatever you want.

I really enjoyed to work with you and your team--we had lots of fun. What in your opinion is more important, having fun with hacking and be passionate, or the actual experience?

It's a mixture of both. You need experienced developers in the team (at least the architect). But they all need to be passionate including the experienced developers.

Do you have any demos, links etc. for the readers?

We do not promote our customers' web sites, so unfortunately I am not able to give you any demo link here. But visit our web site http://dreamit.dein contact with us.

Or visit us on the code.talks developer conference where we act as a sponsor too http://www.codetalks.de/2015/sponsoren

We will starting soon our github repo. And in general we try to establish us as a brand -- at least here in Hamburg. Just to be a cool developer company. We now organize our first meet-ups. Hopefully with your support too. I count on you.

Additionally, here is a link to our chief architect: http://frankcaputo.de. He is a member of the JSF and 
MVC-Ex pert-Groups, where we e.g. have a chance to help improving upcoming JSF versions directly. Frank participates in JSF improvements significantly. E.g. make JSF more HTML5 markup friendly with pass-through attributes or adding resource library contracts.

You always ask me whether I know passionate Java EE developers. How to apply? :-)

Simply send us an email to jobs@dreamit.de, take a look at http://dreamit.de/it-jobs-in-hamburg or contact me directly on Xing https://www.xing.com/profile/Norman_Schoeneich

Norman, thank you for the interview!


3 seats left: HTML 5 for Java Developers, Tuesday, April 28th, 2015 and NEW online workshop: Java EE 7 Bootstrap

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Questions For 13th Airhacks Q&A Easter Egg Edition at Tuesday 7th April

Last chance to ask questions. We will discuss them at 7th April (exceptionally at Tuesday), 6.PM. CET: http://www.ustream.tv/channel/adambien:

  1. I have never used Spring ,hibernate and struts ,I build my web app's using Jsf, ejb,cdi ,jpa ,is the same ? what's the difference? [@SoyRoji]
  2. Do you follow any java or software development related blogs? If so, would you share some with us. [matlach]
  3. JPA 2.1 has properties to drop and create the database but not to update it. How do you usually handle database schema updates and rollbacks? [xavistp]
  4. For multi tenancy application I am using JAVA EE 7. I need to change schema dynamically based on customer.Since there will be a lot of customer so multiple EntityManager will be insufficient. So I am using Hibernate's EmptyInterceptor along with ThreadLocal and changing schema dynamically which is working fine.Since, my solution is tightly couple with Hibernate, could you suggest me some generic way so that it will be vendor independent .

    Also Like to ask which application server( full java EE 7 support) will be best for production Glasfish(payara) or Wildfly or Liberty.

    [surajchhetry]
  5. In a JAVA EE 7 web application with an highly and dynamic configuration settings for the persistence tier, what will be your way? NoSQL or an entity abstraction layer like Atlassian JIRA (Apache OfBiz)? [riccardomerolla]
  6. Your thoughts on java ee "extensions" like deltaspike and picketlink as you always advocate slim "war"-files. i.e. few external dependencies?
I, for one, would miss for example "deltaspike data" or the powerful, though complicated, security features of picketlink (like build in JWT).

    I also noticed that you are a member of the JSR 375 (Java EE Security API) expert group. Do you have any infos/plans about that JSR?

    [haisi]
  7. Having read about the so called "onion architecture" as opposed to the traditional layered architecture I am wondering about how to realize that with Java EE. The onion promotes an application core, which is independent of libraries and infrastructure. With Java EE's POJOs I have a feeling that we are already close to that onion idea, right? Regards, Michael [micgn]
  8. How would you implement "RPC like" API between microservices using your Java EE approach? Do you think that JAX-RS can be used for that (especially with JAX-RS client API)? if not, what else could be used in Your opinion? Regards, Piotrek [pkucia]
  9. It's been announced a new MVC framework with Java EE 8. What do you see in the future of JSF? Do you think JSF will become obsoleted by this MVC framework? Thank you Antonio Varela.[antoniovl]
  10. Do you use JSF for the presentation layer of your projects, or you use someting else? Thank you again. Antonio Varela. [antoniovl]
  11. Why JNDI expose implementation bean name in global namespace? Why the caller must know name of bean for standardized JNDI java:global/appname/modulename/beanname!interfacename [n4noman]
  12. What are your recommended strategies for achieving zero downtime under continuous delivery principles? My team has a good pipeline in place for automated verification: from unit tests to functional tests to code coverage checks to corporate compliance checks to user acceptance tests. At the end of the pipe though, we still have to take a downtime while the application is redeployed. This can range from 1-5 minutes depending on the application, our current Java EE container is Apache TomEE. Thank you! jieryn
  13. Do you think there is value in having a JDBC driver wrapper which populates its configuration parameters (e.g. jdbc.url) from a distributed configuration management system like etcd (by CoreOS)? The idea being that a customer would stand up many instances of a JavaEE server, probably through Docker, and configure the database endpoint through etcd. Then the database could be dynamically migrated and update the etcd configuration. This might allow database migration without restarting all web layer microservices. Is this pathologically dangerous? Is there some alternative to this? Thank you! [jieryn]
  14. What is the best way to achieve a singleton JPA @Entity? I find I often I want to create a singleton object which holds runtime configuration data, configurable within the application itself, and persistently stored within the JPA environment for that application. In order to maintain that only one ApplicationConfiguration will ever exist within the application, I have to jump through hoops for all CRUD operations within my DAO layer and play tricks with the @Id (checking if @Entity exists, then remapping the CxUD with the getId() of the originally persisted entity, yuck). Would you please recommend a strategy for a JPA @Entity which follows @Singleton semantics. Thank you! [jieryn]
  15. Are cross-view (cross-rectangle) Presenter something valuable? Did you ever miss that? In JEE application I used to freedom in EJB assembly, for example: I have 3 EJB A,B,C. I can freely assembly other EJBs:
    
    @Stateless class AddressBean {
    @Inject A a;
    @Inject B b;
    }
    @Stateless class PaymentBean {
    @Inject B b;
    @Inject C c;
    }
    
    
    In JavaFx view is constructed in FXML with rectangles. For example one top rectangle is attendeeinput.fmxl and bottom rectangle is workshops.fxml. And bottom rectangle has inside other rectangle day.fxml. That is OK. What is hard to accept to me is that Presenter is tied to rectangles. I would like to have freedom with Presenter assembly, i would like to inject by @FMXL gui components from many rectangles. For example if checkbox from top rectangle is checked then textfield from bottom rectangle is disabled. It will be natural to me to have a dedicated Presenter, not tied to any rectangle, with injected by @FXML checkbox from top and textfield from bottom view. Conclusion: I want Presenter freedom. I didn't found the freedom in JavaFX so checked afterburner.fx. but there isn't also. My questions: 1. Is Presenter freedom something valuable or it is a wrong thinking. Bad analogy with JEE. 2. If valuable, is it possible to apply that concept to JavaFX, with or without afterburner.fx? [michaldo]

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting


3 seats left: HTML 5 for Java Developers, Tuesday, April 28th, 2015 and NEW online workshop: Java EE 7 Bootstrap

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

First Greenbar With JavaScript

Unit testing a UI-leass "hello world" JavaScript application (like e.g. Nashorn) with npmjs.com, mochajs.org and chaijs.com:

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting


3 seats left: HTML 5 for Java Developers, Tuesday, April 28th, 2015 and NEW online workshop: Java EE 7 Bootstrap

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Counting Lines With Java 8


import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

Path path = Paths.get("./readme.txt");
long lineCount = Files.lines(path).count();

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting


3 seats left: HTML 5 for Java Developers, Tuesday, April 28th, 2015 and NEW online workshop: Java EE 7 Bootstrap

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

A Java EE 7 Startup: Virtualizing Services with hubeo.com

Could you please briefly introduce Hubeo.com and yourself?

My name is Wojciech Ozga. I am 25 years old, living currently in Krakow, Poland. I am interested in different areas of Computer Science, starting from software engineering going through computer networks and finishing on cloud computing and linux system administration.

I started my adventure with programming when I was kid, I got Microsoft Visual Basic 6 Pack from my father. Then I was experimenting mostly with c/c++ till 2004 when I entered the path of PHP. After one year I finished works on Cracow-Apartments.com, one of the first online booking system of apartments in Poland.

Since 2009 I have spent most of my time in the JVM world with small exceptions for python and shell scripting languages. In mid 2012 I started the design and the implementation of Hubeo.com. I decided to keep as close as possible to Java EE stack, and it was good ;)

Hubeo.com is a global web platform for virtualization of services like: accommodation, tours, transportation, medical treatments etc. Complex system logic is hidden behind user friendly web page with modern and fresh design.

What makes hubeo.com stand out from other booking platforms is the ability of its users to advertise, promote, find and book a wide range of services in one place. Main features are:

  • selling own services
  • buying services of other users
  • affiliation
  • automatic booking settlements (with anti-fraud protection)
  • reviews

You told me, you read the book realworldpatterns.com and used the ideas to implement a prototype. What is exact the story behind?

I started to take a deeper look into Java EE on my studies. We had classes where outdated ways of coding and usage of Java EE were introduced to students. That time I was thinking that programming in Java EE is a nightmare. I found some online tutorials to give it a try and I remember one which scared me a lot.

The simple code was surrounded by all the patters coming from "old j2ee times". I had to write the same thing 3 times, encapsulating everything. Moreover I was shown to use ale the xml configurations which I just had to "click and fill" in Eclipse. I was really happy passing the exam and being able to forget about Java EE world. But then I found your books. I read two of them: "Real World Java EE Patterns - Rethinking Best Practices" and "Real World Java EE Night Hacks". The second one made so big impression on me that I decided to give it a try implementing the first prototype version of "cloud market" (the antecedent name of hubeo.com). What I liked the most reading them is that they are written from the programmer point of view: keep it simple, stupid, do not repeat your self. Skip the unnecessary boiler code, write it the simple way so every one can understand. Some times I had an impression that you are more agile then Agile :) Since that time I recommended them to few friends of mine. I think it is obligatory to read them!

You also told me that your colleague was fascinated by the simplicity of the code and wanted to join forces with you. Could you tell the story to the readers?

One friend of mine - Mateusz Krzyszton - was working previously in a big company as JSF programmer. They had a lot of issues with it, large views and server was responding slowly. They were implementing a lot of hacks to make it work. I needed someone to take care of implementing the front-end part, and I knew Mateusz is a brilliant, experienced programmer. That time we met in Lisbon. I told him the basic idea and I showed the very early mock-ups. He was not convinced. Months later we met again in Warsaw where I showed him the skeleton of the web project, implemented in JSF 2.0 with Primefaces and Omnifaces. He browsed through the source code, looked at the implementation of business logic and he decided to reinforce the team! He was really impressed about, how things can be easily done using modern version of Java EE and JSF following patterns from your books.

What surprised you in Java EE the most?

What I like the most is avoiding of writing the boiler code again and again. At the beginning I created few classes, I wrote few lines of code and I added annotations. The very simple, but working, 3 layer application has been implemented! With no magic I had a simple CRUD application with MySQL engine behind! Every programmer with a bit of experience in linux administration can quickly make business application accessible to everyone in a very easy way.

On the other hand I was really disappointed about the security models. I could not find any suitable for hubeo.com. I read official Oracle tutorials 20 times and I did not find JASS as a good solutions for modern web applications. I took a deep look into Apache Shiro but it did not convinced me neither. Modern web systems require much more complex management of roles and permissions. I hope that it will be done with Java EE 8.

What about the Java EE performance? Did you have to perform particular measures to improve the performance?

Performance! Yes, we did several measurements, using JMeter, Selenium and VisualVM. We found few issues but they were mostly related to our implementation. We focused also on the memory usage of our front-end application. I can say that creating complex views, with many components and ajax is not a way to go with JSF. Between requests, JSF stores the component tree of views on the server. Depending on configuration, JSF can store even few hundreds views per user. Having views build with many components we can finish up with few Mb of memory taken by an individual user. That made us thinking about the number of users we can handle during the duration of the user session.

For now we did not find important issues related to the JPA performance, but in the business logic we avoid eagerly loading of collections.

What were the most interesting challenges?

Designing Hubeo.com from scratch was really interesting challenge :) Considering the principles, the design of the database was a really difficult part. I needed a good common schema to store information about services like apartments, tours, dentist treatments and many more. All of those services had to be represented in a similar way to allow design of the algorithm to calculate availability and prices.

Probably the most difficult part of the implementation was the business component responsible for service order and booking management.

Moreover I was really excited discovering Amazon Cloud. Two years ago, together with Jose Java EE Coarasa Perez (blog, @coarasa, LinkedIn), we build one of the biggest implementation of cloud using OpenStack on CMS farm (one of the experiments at CERN) It was a great adventure but after using Amazon services I see how immature OpenStack was that time.

Which IDEs / tools are you using?

At the beginning of my Java EE journey I was using Eclipse. It was a nightmare. After reading your books I switched to NetBeans and I was really happy. Things were just working! Right now I am using IDEA IntelliJ. We use maven and Nexus to store artifacts. For continuous integration server we have Jenkins. The application runs on WildFly 8.2. We also use the relational database: MySQL. Hubeo.com is hosted in Amazon Cloud. We use EC2 to run VMs, S3 to provide common storage for all VMs and RDS for the database. CloudFront helps us to make our static resources easily accessible around Europe and US.

If you had the chance to start-over, would you use Java EE again?

Definitely yes. I could rethink the usage of JSF for that kind of application, but the business logic would be definitely implemented in Java EE.

Do you have any other (secret) startup ideas, which you would like to share with the readers? :-)

I was asked to implement the idea of a simple web page, where people can see the map with different trails indicating interesting points in the city, related to some topics. User can select the trail, search for places, and select specific marker to read details. This is the classical CRUD application. I decided to implement it with Java EE 7 and it took me one day. It runs on WildFly on some really small server (1gb of memory), waiting for a better times - some investor to push it forward.

Any web links / resources?

  • Hubeo.com - virtual market of "real world services". Register your service and start earning money with us ;)
  • Szlaki miejskie - urban trails, application implemented in 1 day using Java EE 7 and Wildfly

Wojciech, thank you for the interview and good luck with your next project!


3 seats left: HTML 5 for Java Developers, Tuesday, April 28th, 2015 and NEW online workshop: Java EE 7 Bootstrap

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Enterprise Nashorn--Free Article

The Enterprise Nashorn article presents Nashorn features beyond standard (ECMAScript-262 Edition 5.1) JavaScript capabilities. From embedding in Java code and Bean Validation, to operating system task automation, hot deployment and implementation of Java interfaces with JavaScript.

See also Playing With Nashorn screencast.

Feedback is, as always, highly appreciated.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting


3 seats left: HTML 5 for Java Developers, Tuesday, April 28th, 2015 and NEW online workshop: Java EE 7 Bootstrap

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

realworldpatterns.com
...the last 150 posts
...the last 10 comments
License