This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

Posts tagged: JVx

Seamless JDBC Access to Databases via HTTP(s)

In many modern enterprise architectures, developers face the same hurdle: direct TCP/IP connections to the database (via classic ports like 1521, 3306, or 5432) are often strictly regulated for security reasons, blocked by firewalls, or simply undesirable in cloud environments.

To connect Java applications to their data sources nonetheless, teams frequently rely on middleware or specialized protocols. However, existing open-source alternatives often came with compromises - whether through limitations in standards, abandoned projects, or complex integration hurdles. With remoteJDBC, a modern open-source solution is now available that enables JDBC communication seamlessly and straightforwardly over HTTP(s).


Existing Alternatives at a Glance

Those who previously needed to connect databases via HTTP or remote setups typically encountered a few well-known options, each with its own limitations:

  • OJP (Open-J-Proxy): A fully open-source project that works very well, but standardly requires its own server process and an additional port. While an extension exists to enable HTTP(s), it is not tightly integrated into the core project, and incorporating it into custom applications often requires numerous additional dependencies, which can easily lead to version conflicts.
  • Apache Calcite / Avatica: A powerful framework, but in the realm of JDBC, it often covers only a subset of the standard and thus does not universally address all requirements.
  • AceQL: Offers a working HTTP-based JDBC connection, but the server-side component is tied to a commercial license (not for all database systems) and number of "database names". This restricts its use in pure open-source or cost-free projects.
  • VJDBC: A historically well-known approach for remote JDBC, but it has not been actively developed for many years and lacks modern Java standards and security features.
  • RazorSQL JDBC Bridge: A commercial product which comes with RazorSQL and has limitations.

The remoteJDBC project sets out to solve precisely these friction points.


What is remoteJDBC?

remoteJDBC is an open-source driver by SIB Visions designed to bridge the gap in HTTP-based database communication. The project's goal is to provide a broad and practical implementation of the JDBC standard over HTTP(s) - consistently under the GPLv3 to safeguard the true open-source ethos.

The approach allows you to retain your familiar JDBC code in Java applications, while SQL queries and results are securely transmitted in the background using a standardized HTTP protocol.


The Highlights: Feature Set in Detail

In daily use, the driver scores points with thoughtful technical characteristics that go far beyond a simple forwarding proxy:

  • HTTP(s)-Native Communication: Directly utilizes standard web infrastructure. Firewalls, proxies, and load balancers that allow web traffic are passed through without issue - requiring no special VPN tunnels or the opening of sensitive database ports.
  • Prepared Statements & Parameters: Supports not only simple SQL queries but also parameterized
    PreparedStatements for secure and performant execution.
  • Transaction Management: Enables the familiar control of transactions (including commit and rollback) to ensure data consistency across the HTTP boundary.
  • Metadata Processing: Provides support for DatabaseMetaData and ResultSetMetaData, which is especially vital for ORM frameworks or generic dataset applications.
  • Lean Dependencies: Unlike complex proxy solutions, remoteJDBC is structured to integrate cleanly into existing projects without unnecessary overhead or the risk of version conflicts.
  • Consistent Open Source (GPLv3): Full transparency and freedom in the source code, ideal for projects that actively support and live the open-source philosophy.

Who is remoteJDBC for?

The driver is particularly interesting for:

  • Cloud and Container Architectures, where direct database connections across network boundaries should be avoided.
  • Applications in Restricted Networks, where exclusively standard web ports (80/443) are open.
  • Projects with Minimal Dependencies, seeking a clean and straightforward integration without excessive ballast.
  • Scenarios Involving Communication Between Virtual Machines (VMs) that need to communicate via JDBC over standardized protocols.
  • Developers and Architects looking for a performant, open-source alternative to proprietary middleware solutions.

Outlook and Contributing

Since the project is hosted as open source on GitHub, it thrives on community feedback and contributions. If you are looking for a flexible way to address databases over HTTP and want a clean alternative to commercial tools or complex proxy setups, it is well worth a look:

remoteJDBC @ GitHub

Try out the driver, test it in your scenarios, and feel free to leave feedback or issues on GitHub to actively support us!

New war modification tool

We have a new, useful tool for you!

With it, you can change the database configuration in already created WAR files. Since the configuration is encrypted, changing the username or password usually requires you to replace the configuration or create a new WAR file altogether. While that isn't a massive effort, it is unnecessary.

That’s why we’ve created a small tool to save you a bit of time. You can use it either with a graphical user interface (GUI) or via command-line parameters without the GUI. The tool was developed as a desktop application using standard JVx and the Swing UI.

Here is what it looks like:

WAR modification tool

WAR modification tool

If you are interested in the tool, just let us know! ;-)

JVx' native Flutter client 3.3.0 is available

We're happy to announce that our native JVx' flutter client 3.3.0 is stable and available.

It's now flutter 3.35 compatible, supports Android' 16KB Page size and is ready for Android SDK 36.

We’ve invested a lot of time in improving stability and performance. Layout rendering should now operate somewhat faster than before. Additionally, we’ve implemented push and deep links in a way that allows the application to update its display using pure parameters. For example, it’s now possible to update individual fields or open entire screens and select specific data records within them.

How it works?


Deep link example

Deep link example


The app runs on a real device. It has a simple screen with a button which will send an email with two links in it. The first will open the app and sets an application parameter. This parameter will be shown as text of a text field. The second link will open a specific screen and scrolls to a specific record.

Our implementation of native push:


Native push

Native push


The app receives a push message while running and shows a local notification. If you tap the notification, the app will be opened as well. In this demo, we don't tap the notification.

The project, as always, can be found on github.

We’ll be updating our VisionX Previewer app in the next few days and releasing it in the stores.

JVx 3.0 is available

We're happy to announce that JVx 3.o is available. It's a feature release and fixes some problems.

All changes are documented in our ticketing system. The release contains 138 tickets and much more work behind the scenes. It is full of experience gained from countless projects. This version is the heart of our low-code platform VisionX and it is a rock star.

JVx 3 is the effort of 34 months hard work.
Thank you Martin and René for your tireless work!

It comes with better database independency, Java code parsing and execution, Image metadata (mobile devices), improved Parameter handling and much more. The full list of changes is available in our ticketing system and in the changelog of our code repository.

Start with JVx

Mobile UI new features

The next mobile UI will be version 2.6.0 and will be available in April.
We wrote about some new features in our last blog.

We have more highlights for your

  • Tree support

    Tree support

    Tree support

    Tree selected

    Tree selected

  • Concat mask support

    Concat mask

    Concat mask

  • Popup/Content support

    Popup

    Popup

  • Saving immediate support for editors
  • Signature pad with lock mode (better scrolling support)
  • App now sends alive to the server
  • Websocket keep alive

Mobile UI upcoming release

Our mobile flutter UI is just awesome. Just sayin'

The next version will be 2.6.0.

It will fix some smaller bugs and will provide you with a killer feature. It will be possible to use multiple application configurations. Simply switch your JVx based applications.

The application overview will look like this:

Application overview

Application overview

What else?

We have support for haptic feedback and slider button. We improved screen loading and will show a skeleton with loading animation. We have support for flat/text buttons an image viewer and full-screen multiline text editor. The image viewer is automatically available for all your image editors. Simply tap on an image. If you have small multiline editors in your screen, simply double tap to get a full-screen editor.

You want more?

We have edit support for simple tables (single cells or the whole record), we have sort on header and also table reload support. The application API was updated and is now much easier to use. Our example application demonstrates many use-cases but a full API documentation is not available at the moment. This is on our todo-list!

The flutter client for JVx applications is Apache 2.0 licensed and the source code is available here.

JVx' Multi-factor-authentication documentation

The multi-factor-authentication support in JVx is not a brand-new feature but it was undocumented. If you're interested in MFA, simply read the documentation.

If you're also interested in custom REST services, read following article.

The JVx documentation doesn't explain every single feature of JVx, but it's better than you think!

JVx 2.8.5 - Statistics

JVx 2.8.5 is out and we have some Source Code statistics for you!

Our last statistics were determined for JVx 2.2. The source code grew by 50.012 lines, since 2.2. We now have 178.896 (JVx library, Swing UI, tests) compared to 128.884 in JVx 2.2. Still awesome if we compare the features of JVx with any other application framework!

Here are the actual numbers for you:

JVx library   Swing UI
LoC   Type
107.951   Code
86.032   Comments (~ 44% of Code)
28.282   Empty lines
222.265   Total
LoC   Type
41.544   Code
22.321   Comments (~ 35% of Code)
9.249   Empty lines
73.114   Total
 
JVx library (Test cases)  
LoC   Type
29.401   Code
14.620   Comments (~ 33% of Code)
9.649   Empty lines
53.670   Total

Some additional numbers:

Files and Tests
JVx library source files   825
Swing UI source files   148
Test source files   151
Total   1124
Still a small codebase ;) and still very easy to maintain. Here are more numbers, about testing:
 
Unit tests (no UI, without manual perf. tests)   1000
Class coverage (without UI)   73%
Method coverage (without UI)   62%
Our coverage is not as good as with 2.2 but still not bad.

TOP 10 classes

Classname   LoC
DBAccess 5.775
MemDataBook 4.712
JVxTable 2.704
ArrayUtil 2.613
DBStorage 2.237
StringUtil 2.230
Server 2.058
SimpleJavaSource 1.583
PostgreSQLDBAccess 1.495
DateUtil 1.468

This are interesting numbers because in JVx 2.2, MemDataBook was on 1st place. We now have more code for database support than before. The newcomers are SimpleJavaSource and PostgreSQLDBAccess.

We tried to reduce complexity of DBAccess and MemDataBook, but complex things are complex. This is why we develop JVx. It makes complex things, simple.

JVx 3.0 will change something...

The development phase of JVx 3.0 has started. We'll change some things which are important to know:

JVx 3.0 won't be Java 6 compatible. We'll switch to Java 8 and... still super backwards compatible.

We'll also change some package names like javax.rad. But we don't have a complete list right now.
So keep reading.

JVx 2.8.5 is available

We're happy to announce that JVx 2.8.5 is available. It's a bigger bugfix release and comes with many powerful new features.

What's new?

  • Loading MetaData performance tuning
  • REST

    It's now possible to register custom admin services and to disable general admin services. We also introduced a public zone.

  • E-Mail support

    Simply send an email with pre-configured server settings.

  • Dynamic cell editors

    Set the dynamic cell editor on one cell and use different cell editors in the same cell, based on a type configuration.

  • Simple Map implementation

    OpenStreetMap and Google

  • Accessible/Not Accessible per environment
  • putObject support for DataRow
  • Better logging API configuration
  • Many more...

The full changelog is available here.

Start with JVx