60k eBills per Hour, Tiny WARs -- Or Java EE 7 In Mass Billing and Public Services Market in Slovenia
Aleksander, please introduce yourself
My name is Aleksander Bastl and I am a software engineer that has more than 30 years of experience in software development. I'm currently working on a PhD on the topic "Using the IOT devices for bridging the gap between Smarthome and SmartGrid". I am also president of the software vendors section in the "Chamber of Commerce and Industry of Slovenia", where I led a working body for the preparation of a national standard called e-Slog 1.6.1., which has since been accepted and now defines the legal basis of electronic exchange of invoices in Slovenia. https://e-slog.gzs.si/vsebina/e-SLOG-dokumentacija-za-XML-enostavni-ra%C4%8Dun-verzija-16. At the moment I'm also one of the few Vaadin certified engineers in Slovenia. I founded "Vaadin Meeting Group Slovenia", where Slovenian Vaadin users can exchange their experiences www.meetup.com/Vaadin-Slovenia/. I am also the owner and manager of a Slovenian company Bass d.o.o. (www.bass.si), where I am actively involved in our development cycle from a business perspective. We are well-versed and specialized in mass billing systems such as public water services, garbage collection, gas, heat, waste water... We have been in this particular business for more than 25 years and in this segment we currently cover more than 2/3 of the Slovenian market.
You told me during the airhacks, you are a founder of several companies. Are all companies using Java EE?
Companies Bass d.o.o (www.bass.si) and Ring d.o.o ( www.ring.si ), which are involved with development of new mass billing software are using Java EE 7. Using java EE we have developed quite a few solutions. To name a few examples: a paperless business environment, that can be used as a full cloud solution with personal certificates for security (BassDok), a time record for employees, a mobile work order program that is accessible with a tablet etc. Novatel and Eurotel (www.novatel.si , www.eurotel.si) are involved with VoIP technologies. We are developing software in Scala - also a JAVA derivative. We put special emphasis on better responsiveness, so we use more process oriented software that can handle transit for VoIP exchange with a few thousand parallel VoIP channels at once.
What are you currently building with Java EE?
At the moment we are developing several projects. Salary accounting (which is complex from a legal aspect), information portal for utility services, invoices with massive PDF generation (500.000+ monthly), mass billing used in public services (Developing new generation in JAVA EE)...
Can you share with us some geeky numbers like e.g. TX per seconds, heap sizes, thinnest WARs etc -- whatever Java EE devs might find interesting.
Java EE enables us to write highly scalable and compact programs. I find our electronic Invoices very interesting, since despite being one of the biggest providers in our country, our business logic part of WAR is less than 6MB big and without load balancing a virtual machine with a configuration of 12GB of ram and 4 cores is capable of around 60.000 transaction per hour if the eBill is not larger than 500 KB (normally they average around 300KB). Our Salary accounting business logic is only 350KB and 9MB with Vaadin UI.
Are you happy with Java EE so far? Is Java EE productive?
Yes im very pleased with Java EE 7 so far, because our main focus lies in the business logic, for which we invest a lot of time. Using Java EE results in a very fast development cycle and its usage enables us to write compact and readable code. We are also very pleased with UnitTesting, because it helps us release better products for our users.
Which application servers, tools or IDEs are you using?
We are currently using Payara. Our migration to it from Glassfish was smooth. For developing, we are using IntelliJ and Vaadin.
How important are standards for you? Does your application depend on application server specific APIs?
Java EE standards are very important and we follow JAVA EE 7 standards. Our applications are not dependent on application server specifics, we are very strict and use only on Java EE 7 specifications which are more than sufficient for our needs. With this strategy we are fully JAVA EE server independent.
Which Java EE APIs are your favorites?
JAX-RS, JPA, EJB, CDI (@Inject)
You attended the airhacks.com several times. Did you had the chance to chat with other attendees during the airhacks? If yes, what was the most interesting project / problem / use case in the workshops?
Yes we talked with other training participants about our and their projects and exchanged some ideas and benefits of JAVA EE.
How much code have / external libraries you deleted after the airhacks workshop? :-)
Every time we come back from an Airhacks workshop we have a fresh look on how to code in Java EE. We actually attended Java EE bootstrap and Java EE effective workshops before we started first big projects in Java EE, which helped us to differentiate between do's and don'ts very early in the development. We adopted and applied BCE patterns from the very beginning with very few external libraries except Vaadin framework for UI. With later visits of workshop we managed to simplify development cycles with simple tricks that were shown, like using abstract classes and simple unit tests. We have been coming back ever since to find out about new technologies and to strengthen our confidence that we are on the correct path.
Can you share any resources (blogs, etc feel free to promote yourself) with us?
In Java EE7, we have developed and manage a processing center for the exchange of e-invoices ( www.procesni.center), which received EuroCloud award in category "Best cloud solutuion for horizontal market". Online portal designed to end customers of public service www.komunala.info. A user can find out about the state of meters, review account message, payment status, download e-invoice schedules of waste collection, service contract ...
Aleksander, thank you for the interview!