JVx 2.2
Today is a great day because I'm very happy to announce JVx - version 2.2.
It's an awesome release with soo many new features.
First of all, the LoC analysis. Here are some very interesting numbers for you:
JVx library | Swing UI | |||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||
JVx library (Test cases) | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
Not bad if you compare it with other releases: 0.8, 1.0, 2.0.
We've still a very small codebase, compared to the features. The code quality and test coverage are still "green".
Some additional numbers:
Files and Tests | ||||||||||||
|
||||||||||||
Still a small codebase and still very easy to maintain. Here are more numbers, about testing: | ||||||||||||
|
||||||||||||
Our coverage got better since 2.0 - well done. | ||||||||||||
TOP 10 classes
Classname | LoC | |
MemDataBook | 4.028 | |
DBAccess | 3.772 | |
JVxTable | 2.510 | |
ArrayUtil | 2.224 | |
StringUtil | 1.738 | |
Server | 1.715 | |
DBStorage | 1.542 | |
JVxFormLayout | 1.243 | |
FileUtil | 1.182 | |
SwingApplet | 1.102 |
Sure, MemDataBook and DBAccess are our main classes but we should check if it'll be possible to reduce complexity!
And last but not least, a short overview of new features:
- Performance tuning
JVx got a boost. We pimped our model to be super fast. Sure, it was fast and we didn't have any problems... but during some code reviews, we found some lacks because of gc calls. The memory consumption wasn't perfect and not gc friendly. We created a lot of temporary String[] and event objects, even if the weren't needed.Long story, short: Inserting 2.000.000 records with 16 columns was done in about 23 seconds. Now: 1.5 seconds.
- Support for IoT/M2M/Microservices
We pimped our remote communication a little bit. It's now possible to embedd JVx, especially the server class, in any environment that supports Java. We had an implementation for Java application serves like Tomcat or Wildfly, but no solution for plain socket servers. We put a lot of work in this part of JVx. We now have out-of-the-box solutions for vert.x or plain socket servers. It've never been easier to write remote applications with JVx.
- Better JNDI support
We had JNDI support since JVx 1, but now it's bulletproof. Use JNDI to configure your database connection or the whole application. It's possible to load application config.xml via JNDI. Same is valid for server configuration. We allow, so called, virtual configurations.
- @PostConstruct and @PreDestroy
We've support for both annotations in our server-side Lifecycle objects. It's now possible to remove your workarounds like:
if (getClass() == Application.class)to find out whether the application LCO or session LCO was created. The session LCO extends the application LCO and otherwise it wasn't possible to do things only if application LCO was created, because constructor was called for every session LCO again.
- Lambda support
It's soo much fun, working with lambdas and Java 8. We're happy to have full support for lambda expressions in JVx especially for event listener handling. And it's backwards compatible (Java 6, 7) without restrictions.
Be sure that you recompile your JVx projects with JVx 2.2 library. - Log4j support
We love using built-in Java APIs like Logging API - because it doesn't need extra libraries. But we're open for 3rd party libraries and log4j(2) is too popular to ignore it. So we have official support for it in JVx. Simply use the new log factory com.sibvisions.util.log.log4j.Log4jLoggerFactory for your application and configure your loggers via log4j.properties or log4j2.xml.
- Spring security
We had a customer request for supporting SAML 2.0 authentication. SAML what?
Yes, we had the same question, but found that Spring framework had a solution for it: Spring Security SAML. We didn't reinvent the wheel and connected Spring security with our security mechanism. Here's the source code. - HanaDBAccess
HANA is the in-memory db solution of SAP. We've a connector for it. But be careful, because we weren't allowed to tune the database
- Bugfixes
The list isn't complete but contains some important features. The full changelog is available here.