Adam Bien's Weblog

From Electronic Transactions Over Banking Services To Payment Gateways--Java EE 7 In FinTech

Jakub, please introduce yourself

Hi. I've been a Java developer for almost 10 years now, working mostly with Java EE. Here at Blue Media I'm a Software Architect who tries to stay in touch with the code.

What are you building with Java EE?

We're a company which invents and delivers our own services in so called FinTech. Blue Media is a provider of solutions for electronic transactions and online support--from the automation of home payments to complex, custom-designed electronic banking services. We're building payment gateways and software that helps people move funds from one bank to another. Everything is developed as a service that is integrated with our clients systems

How big is your team?

The team I manage comprises of 11 talented developers who are divided into 4 working groups which are handling modules of our systems. This structure allows as to cope and hand-deliver tasks with great efficiency.

Can you share with us some geeky numbers like e.g. TX per seconds, heap sizes etc -- whatever Java EE devs might find interesting.

Our biggest database hits 150 TX/s running on 64GB of RAM and 16CPUs, we're running our production systems on around 400 virtual hosts

150 tx/s does not sounds a lot. What comprises a typical transaction in your system (DB access, verification, remote communication etc.)?

A single transaction comprises of a few "jumps" between various modules (microservices) each of which usually has it's own database, so the workload is somehow distributed. For example a payment transaction is:

  1. validate (read conf from db)
  2. insert into db
  3. 5-6 updates in db later on (changing payment status, filling up payer data)
  4. external communication through JMS (internal calls) or HTTPS
  5. execute settlement (update again)
This is also distributed in time (5-10min) Highest value for TPS in our payment database I've got from Zabbix is 250

For comparison our highest throughput system running SMS Gateway (sending authorization messages for banks) has this metric at around 200, with peeks hitting 1000

Are you happy with Java EE so far?

Yes, it's a great environment to work with, provides lots of features out of the box and really simplifies development in a transaction dependent software. Otherwise I don't think I'd have stick to it for so long. I'd really encourage everyone to give it a try and see for themselves how easy it is to do things with it

Which application servers, tools or IDEs are you using?

We're running our systems on JBoss/Widlfy with Postgres as our database and ActiveMQ for JMS. We're trying to stay up-to-date with our app servers as much as we can, but to be honest we're still running few instances of old Jboss 4.2.0. On daily basis we work with Maven, GIT, Bamboo as CI and continuous delivery, Intellij IDEA is out IDE of choice, Crucible for peer code review and pgAdmin. Other tools for task management are Jira, Confluence. We're now trying to move to Docker and experiment with ELK stack which hopefully will help us handle our enviroment even better

How important are standards for you? Does your application depend on application server specific APIs?

We try to stick to standards as long as we can so we usually don’t use anything that is not specified by the core Java EE. This helps us to move to newer versions of the spec and app servers faster. Our systems were first developed using old J2EE, and we've had some trouble moving to later version but since JEE 6 it have been definitely easier. Sometimes though it is necessary to write some server specific code like for example when clustering singletons.

Which Java EE APIs are you using in your products?

JPA, JMS, JAX-RS, Bean Validation, JTA, EJB, CDI

Take a look at the Java EE 8 APIs. Which of the APIs are most interesting / important to you?

From the new features I'd go with JSR 107
As for existing things JMS 2.1, JAX-RS 2.1 and CDI 2.0 since we heavily use them in everyday development

Can you share any resources (blogs, etc feel free to promote yourself) with us?

On of my favorite places lately is HackerNews where you can find useful and interesting stuff happening in and our development world. Comments sections is really great here as well. I also like to read DaedTech which is more of a developer-philosophy blog than a technical one.

Is Blue Media hiring Java EE developers?

Yes ! If you are Java JEE developer or someone who is passionate about new technologies come and join Blue Media! We come from all places and backgrounds but we all share a passion for the future

Jakub, thank you for the interview!


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Singleton Pattern in ES6 and ES7


export default class Singleton {

  static instance;

  constructor(){
    if(instance){
      return instance;
    }

    this.state = "duke";
    this.instance = this;
  }

}

Now:


let first = new Singleton();
let second = new Singleton();
console.log(first===second);

//output: true

The code above uses ECMAScript 2015/ES6 (classes) and ECMAScript 2016/ES7 (static fields) features. It transcompiled, "old school" ES5 representation looks like:


	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

	var Singleton = function Singleton() {
	  _classCallCheck(this, Singleton);

	  if (instance) {
	    return instance;
	  }

	  this.state = "duke";
	  this.instance = this;
	};

	exports.default = Singleton;

See you at JavaScript Bootstrap or Building Apps with React!


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Platform-Neutral Microservices Discussion--DevDay 2016 Keynote

I was asked to deliver a keynote [in German] at DevDay 2016 about Microservices without mentioning "Java" too much. Partially I managed to deliver the keynote in a platform-neutral fashion :-)

See you at Java EE Workshops at Munich Airport, Terminal 2 and particularly at Java EE 7 Microservices. Also checkout javaeemicro.services.


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Headlands Firehose Edition Is Available

The "Firehose" release (v0.0.4) headlands (a JCache based in-memory grid) delivers CacheEntryEvents via WebSockets in JSON-format.

Cache change events can be received in real-time from Java clients:



import javax.websocket.ContainerProvider;
import javax.websocket.DeploymentException;
import javax.websocket.WebSocketContainer;



public class NotificationsReceiver extends Endpoint {

    @Override
    public void onOpen(Session session, EndpointConfig ec) {
        this.session = session;
        this.session.addMessageHandler(new MessageHandler.Whole<String>() {

            @Override
            public void onMessage(String msg) {
            }
        });
    }

}


WebSocketContainer containerProvider = ContainerProvider.getWebSocketContainer();
NotificationsReceiver messagesEndpoint = new NotificationsReceiver();
containerProvider.connectToServer(this.messagesEndpoint, new URI("ws://localhost:8080/headlands/firehose/" + channel));

...or JavaScript:

   this.callback = function(payload){
   
   }

  let socket = new WebSocket(`ws://${this.uri}/headlands/firehose/*`);
   socket.onmessage =  (event) => {
     this.serialize(event.data,this.callback);
   };
   socket.onopen = (event) => {
     console.log("socket connection established",event);
   };

See you at: Building HTML 5 Applications with react.js and Java EE 7 workshops at MUC Airport!


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Satellites, Internet of Tractors, Machine Tracks Or Next Generation Farming With Java 7

Manuel, please introduce yourself

Hi, my name is Manuel Blechschmidt, I am currently the team lead of www.nextfarming.de where we develop a NEXT generation farm management system. I have a personal blog where I write about Jave EE and technology here: www.incentergy.de/ and I post all of my ideas on my twitter account twitter.com/Manuel_B if you want to judge my coding skills you can look into my github account: github.com/ManuelB

What are you currently building?

We are building a multi-tenancy farm management system which helps farmers to enhance their processes and be more profitable. A big part of the system is about handling geospatial data like satellite images or machine tracks.

We discussed an interesting use case with satellite images, fertilizers and big machines involved. Please tell me more about it.

This functionality is one of the key innovations that we are delivering. We have a partner called Vista Geo who takes satellite images from the copernicus project from ESA. Based on these satellite images they can calculate how much bio mass is growing on a certain place on earth. We call the produced map TalkingFields base map. In NEXT Farming you can import these maps and use an online editor to plan how much fertilizer or how many seeds you are going to use on a certain place on the field. This is especially important because if a farmer overfertilizes he might pollute our drinking water. Our software helps the farmer to make sure that the fertilizer is put on a place where it is consumed by the plant. The whole application runs in the browser without installation and produces in the end an ISOXML file which can be consumed by a machine. Currently we get a lot of positive feedback from the market how easy our software is and collaborating with machine manufactures to make it even easier to use it.

Why are you using Java EE?

Java EE has by far the best tool support and is an open standard. It does not have a vendor lock-in and a proven track record of successes in big enterprise systems.

How big is your WAR and why?

83mb. We are bundling multiple JavaScript libraries and some JARs with domain logic like geo spatial processing of shape files or CSV processing. This is not part of the Java EE standard therefore our war is a little bit bigger.

How fast is the build?

Our system takes currently 2 min 14 sec to build including unit tests for our Java and JavaScript code.

How fast is the deployment?

On our test machine it takes 18 seconds to deploy sometimes faster sometimes slower depending on what else is running on the machine.

You started with developers without any Java experience. How long did it took to become productive with Java EE 7? What about the learning curve?

I would say it took one to two weeks for them to work productively. Java EE 7 is a lot more straight-forward then Java EE 1.4. A lot of problems like ORM or serialization are already solved so the developers can concentrate on domain logic. I created a template for all important concepts like JPA beans, JAX-RS beans and Enterprise Java Beans. My team could base their work on these templates. Nevertheless we are still learning every week something new and try to enhance our current code. The learning curve was quite flat so the team produced very fast working and maintainable code.

Which application servers, tools and IDEs are you using?

We are using Wildfly 8.2 in production. As an IDE I recommend JBoss Developer Studio but every developer is free to choose their own tools. So some switched to NetBeans and there are also people that are using Sublime. Our build is using maven so there is no dependency to a specific IDE.

How important is the Java EE standard to you? Is your code dependent on application server specific features?

I like the idea of using a standard. Nevertheless if we have to use vendor specific extensions like hibernate spatial or special jackson serializers we are doing that. We try to be as pragmatic as possible. If a certain solution solves our problem we don't care it it is part of the standard or not.

Take a look at the Java EE 8 APIs. Which of the APIs are most interesting / important to you?

The question would be easier if I would just have to say which API is not important or interesting to us ;-) So we are using JPA, EJB, JSF, JAX-RS, JMS, Bean Validation, JAX-B for JSON Binding and CDI. I have to admit that I participated in the Java EE 8 survey but that most of my concerns weren't addressed. We have a multi-tenancy architecture so having these features would be great. From the Java EE 8 set I will look deeper into Java EE Security API and MVC 1.0.

Is your company hiring Java EE developers?

Yes, we are actively searching people as Java, JavaScript and HTML5 developers. If you are interested please visit: www.farmfacts.de/jobs

Any links you would like to share with us?

http://www.nextfarming.de

Manuel, thank you for the interview!


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

@Stateful vs. @SessionScoped

CDI's @SessionScoped annotation specifies CDI beans maintained within a HTTP session:

"...The session context is shared between all servlet requests that occur in the same HTTP session. The session context is destroyed when the HTTPSession times out, after all HttpSessionListener's have been called, and at the very end of any request in which invalidate() was called, after all filters and ServletRequestListener s have been called..."
JSR 346: Contexts and Dependency Injection for JavaTM EE 1.1,[6.7.2 Session context lifecycle]

The EJB @Stateful annotation denotes classes which are entirely controlled by the client. Their lifecycle is completely independent from HTTP session. In fact EJBs could be even present in environments without an installed servlet container.

An @Stateful EJB instance is exclusively created for a client when:

"...A session bean instance’s life starts when a client obtains a reference to a stateful session bean instance through dependency injection or JNDI lookup, or when the client invokes a create METHOD method on the session bean’s home interface..."
The same instance is destroyed in case:
"...When the client calls a business method of the bean that has been designated as a Remove method on the bean class or a remove method on the home or component interface, the container invokes PreDestroy lifecycle callback interceptor methods, if any, for the bean instance after the Remove method completes..."
JSR 345: Enterprise JavaBeansTM 3.2, [4.6 Stateful Session Beans]

Although the names are similar, @Stateful and @SessionScoped behave differently. @SessionScoped bean instances are maintained within the HTTP session. Only one instance of a given class can exist within a HTTP session. All @SessionScoped instances are destroyed together with the HTTP session.

@Stateful EJBs, on the other hand, maintain usually 1:1 relation between an instance and the client. The client is completely in charge of creating and destroying the instances. A single client (=usual Java class) could even maintain multiple @Stateful instances.

@Stateful EJBs can be also denoted with @SessionScoped annotation. Then the active HTTP session becomes the "EJB client" and maintains the instances.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Drones, Smart TVs, Gaming -- Java EE Through The Eyes Of A Serial Entrepreneur

Phil, please introduce yourself

Hi Adam. I’m a veteran software developer with over 15 years of experience working with companies of all sizes, including fairly large enterprises such as Citigroup, IBM, Microsoft, Nokia, Oracle, and the Volkswagen Group. I’ve been part of the Java community from the age of 19, and joined the Java Community Process in 2004, (I believe). I also became an evangelist of Sun Microsystems development tools for Java a few years later. I think Sun called us “Heroes”.

I have a rather out-of-date professional site at fillip.pro, and can often be found tweeting about the tech. that mosts interests me on Twitter (twitter.com/siilime).

You are "Consultant CTO" and you are also working on new technology startups. What are you exactly doing?

A few years ago I moved from large enterprises to support startups. I felt large enterprises were stagnating, and most of the innovation was happening on a small scale. I’d had a few startups already by that point, but always felt pulled back to large companies. That changed in 2014. I began advising investors on which startups to invest in, from a technical view point, and then that led to sitting on the board of several startups, and eventually leading / developing products and services for a few. Now I focus on developing idea and concepts for startups to prepare them for scale and investment.

What are you building with Java EE?

Well, that’s a good question. What can I openly discuss? Actually, I’m developing some large-scale solutions that integrate with agricultural systems in South Africa and South America, drones, professional hardware devices, a machine learning system, and consumer apps. Actually, that’s all one project. It’s been in development for a few years, and despite the fact it’s for a startup, it’s possibly the largest system I’ve been working on. In addition to that I’ve been working on enhancing the security in several cloud-based systems and developing a scalable video game platform using Java EE. All of which play to Java EE’s strengths. I’m technology agnostic, and only pick what works best in each case. Scale and security are definitely a bonus of working with Java EE.

What was your geekiest Java EE project?

That’s a tough question. I’ve had so many geek moments in my career. I worked on a smart TV that had a custom JVM running on a custom Linux-based operating system. Java EE provided the TVs app store and advertisement network, so through and through that consumer product was entirely Java based.

That would probably go hand-in-hand with working on a government intelligence project; prototyping an enterprise intelligence system with service bus, which integrated a large number of disparate data systems, including projects from Oracle and Motorola, and displaying real-time data on a web-based geographic information system. Some of that work included collaborating with interesting government intelligence folk, and was a lot of fun.

Can you share with us some geeky numbers like e.g. TX per seconds, heap sizes etc -- whatever Java EE devs might find interesting.

Honestly, I can’t remember the statistics. Those projects were both in 2008 and 2009. The intelligence system had to be real time though, and managed significant amounts of data. Some of the feeds came from systems that were built before Java existed. It certainly competed with some of the largest banking systems I’ve seen in terms of transaction throughput. Reducing things like reliance on sessions and in-memory storage, kept the system running with minimum memory requirements. It’s a fine balance between runtime performance and instantiation performance when working on systems on that scale, and we built it with runtime performance in mind.

Is Java EE the right choice for a startup?

That all depends on what the startup is trying to achieve, and what resources they have available. I’ve seen startups move from Java to Ruby. That has never ended well. And I like Ruby. But scaling teams with Ruby can be quite painful. Some startups can get away with lightweight Node.js, and it works quite well for them. I’ve used it a lot myself. If I see PHP, I’ll walk swiftly in the opposite direction. If a team is considering Python, I tend to push them towards Go these days.

Java EE works well for a startup with security and scale. Those two aspects should be considered with every technology startup, but when they are critical to what you’re trying to achieve, then there is nothing better, yet. Also, if you look at cloud infrastructure, concurrent development, machine learning, and scalable data processing, then Java EE has it all there. If you look at some of the largest tech. companies, and the decisions they made over time, you’ll see Facebook moved quite a lot to Java, Twitter is predominantly Java-based, from Ruby, and Apple has been for many years.

That doesn’t mean Java is a silver bullet. It still requires intelligent architecting of solutions, and a sensible approach to infrastructure design.

Which application servers, tools or IDEs are you using?

I tend to use Wildfly at the moment. I was a Glassfish user, but Oracle’s position on its technology tends to make me want to find an alternative these days. I use Maven, against the popular trend. I heavily rely on inheritance on Maven project files to keep them lightweight and simple, and I use NetBeans mostly for Java development. However, I also use Atom and Visual Studio Code more recently, and then manage my builds on the command-line. That workflow ensures I’m comfortable with the portability of the project in its current state. I use Codeship to maintain continuous testing and deployment, to enhance my confidence with the work I’m doing.

I also write code on my Mac in an Ubuntu virtual machine, as that’s what my projects tend to run on. That way, I can design and develop immutable instances using Docker on my local workstation, and commit the system scripts to my code repository with the same workflow in which I manage my application code. That enables me to hand over a project to a third-party developer and know they can run a simple command and have a whole application instance built, deployed, and have the application subsequently built and installed onto that instance, without having to concern themselves with anything but the changes they are there to make.

How important are standards for you? Does your application depend on application server specific APIs?

My view on this has evolved over the years. When I joined the JCP I was all about standards. I joined W3C working groups for the same reason. I still believe standards are essential, but the way in which standards can come about should be flexible. I prefer to wait for a platform to innately mature with platform standards, than use a server-specific API out of impatience. I never jumped in to Spring or Hibernate if I didn’t need to either, as Java often provided decent tools. These days I evaluate on a case-by-case basis, but I still tend to avoid application server-specific APIs. I don’t want to struggle to move my application between platforms, or struggle to find resources capable of understanding what I’ve built and why.

Which Java EE APIs are you using in your products?

Lots. I use Java EE 7, across all of my Java EE-based projects. EJBs, Servlets, Authentication, JMS, JAX-RS, JPA and JTA. Leveraging mature APIs enables me to rapidly develop performant systems without having to identify a new approach or identify compatibility between two different third-party components too often.

You commented my post "Oracle Moves In Strange Ways", what is your take on current Oracle's strategy?

When I make decisions on new projects, or new components of new projects, I will always re-evaluate the current technological landscape and where I expect a system to be in 3 years. Oracle is tainting that view significantly by not loosening the reigns on Java to allow Java EE 8 to be completed. It should be looking at the more modern Node.js, Go, and Rust programmes, to understand how best to support the development community. Oracle is living on a legacy of enterprise software licensing, and that doesn’t work with Java. If it wishes to benefit from the huge ecosystem surrounding Java, specifically the free resources that can help support the platform, then Oracle needs to let the community drive it rapidly, or risk losing a costly acquisition. There is no bigger community of developers than the Java community, and that alone is invaluable to Oracle.

Take a look at the Java EE 8 APIs. Which of the APIs are most interesting / important to you?

Java Security as it needs to stay modern and relevant. JSON-B is also key to that. WebSockets and Concurrency are also key to making Java EE a relevant platform for new system development.

Can you share any resources (blogs, etc feel free to promote yourself) with us?

My blog is in refurbishment! I tend to read yours for Java Enterprise. Otherwise I just follow people that interest me on Twitter and follow the links from there. It’s replaced my RSS feed for Java news.

Phil, thank you for the interview!


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Are @Local and @Remote EJB Interfaces Deprecated?

Implementing both: @Local and @Remote EJB interfaces at the same time is a pragmatic approach to separate coarse grained public, from finer "private" views.

With the introduction of Java EE 6 in 2009, the WAR replaced the EAR with the following implications:

  1. Server side frameworks like e.g. JSF (if used) and the business logic are residing in the same WAR.
  2. REST resources are accessing boundaries (EJBs) locally.
  3. WARs do not require any further modularization. JARs within WARs are more an exception than a rule.
Also the landscape changed. HTML 5, native clients and microservices became the standard which further influenced the application design:
  1. High level, REST APIs are the portable way for HTML 5 and native mobile clients integration.
  2. WARs are the new modules. There is no binary dependencies (=shared JARs) between WARs. RMI-IIOP communication (@Remote) relies on serialization and introduces binary coupling.
  3. REST endpoints are used to communicate between WARs aka microservices.
  4. Remote CORBA clients are getting less and less popular.
  5. Remote communication requires serialization, what introduces security risks.
  6. Remote communication with an application server usually requires the distribution of a proprietary Java library.

REST interfaces effectively replaced binary @Remote EJB communication.

With Java EE 6 all public methods of an EJB class comprise the default "public view" of an EJB. This "conventional, virtual interface" introduced with Java EE 6 makes the @Local interfaces effectively superfluous.

From Java EE 6+ design point of view @Local and @Remote interfaces became deprecated. Actually all interfaces with a single implementation should be considered as, at least, suspicious. Interface-less EJBs remain the perfect boundary.

This post was inspired by a question in the 27th airhacks.tv.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

Strange Oracle Discussion, CDI vs. Singleton EJB, Remote, No Control or 27th airhacks.tv Questions and Answers

95 viewers watched the 27th airhacks.tv live Q & A show with questions ranging from Java EE 8 news, Oracle inactivity, concurrency, SSO (...):

Any questions left? Ask now.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

27th Airhacks Q&A: Java EE 8 News, Interceptors, JAXB, @Remote, BCE and Eclipse

Today (Monday) at 6 pm CET I will discuss the following topics:

  1. Java EE 8 News
  2. Interceptors and Dependency Injection
  3. JAXB XML serialization and the "single element challenge"
  4. Singleton EJBs, CDI and concurrency
  5. GlassFish and JSON serialization with Moxy
  6. @Remote, @Local EJBs and the remote penalty
  7. Are @Remote and @Local still viable?
  8. WildFly Deployment and properties resolver
  9. BCE in Eclipse and can Boundary community with Entity?
  10. Stateful EJBs vs. SessionScoped

Ask questions during the show via twitter mentioning me: http://twitter.com/AdamBien (@AdamBien) or using the hashtag: #airhacks. You can join the Q&A session live each first Monday of month, 6 P.M at airhacks.io or http://www.ustream.tv/channel/adambien

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.


NEW workshop: Building HTML 5 Applications With React.js
On demand workshops: Java EE 7 Bootstrap, Effective Java EE 7, Java EE 7 Testing and NEW: Java EE 7 Microservices are available for streaming

Newsletter: airhacksnews.com

A book about rethinking Java EE Patterns

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