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

News collection

It's some time ago that I wrote here. The year was so unexpected and we had so many challenges. I don't mean Covid-19, I want to write about our hot stuff from our dev team.

Best news first: Next VisionX release will be available before Christmas. It's outstanding and the best version since our first release.

But some advertising first :)

We had a talk about Low-Code and VisionX on December 2nd at Berlin Low-Code Solution Week 2020. Our talk is in German, but very interesting and fresh. Watch the video.

Another thing we want to introduce, is our VisionX academy site. It contains a lot of new explainer videos. Simply check our explainer videos. Most are not longer than 2 minutes.

And now the big news!

Our new VisionX release has a brand new Connectivity AddOn and also a brand new Query Editor AddOn. The Connectivity AddOn enables you to use any REST service in your application. We tried to keep the Service integration as simple as possible and support about 20 Service providers with about 50 services - out of the box. Some services providers are SAP, Salesforce, Trello, Slack, Jira, OData, ...

Our brand new Query Editor is end-user friendly and super easy to use:

Query Editor

Query Editor

Simply define your own queries and use them in any screen.

Another key-changer is our brand new mobile client. It's a complete rewrite of our old clients. It's based on Flutter and it's fully OpenSource. The repo is available on Github. A demo application is also available on Github.

The client is more powerful than the old client and supports all Layout features of VisionX. The old didn't support any layout customization. And the key-changer here is that the live preview runs in any web browser. You don't need a mobile device to test the mobile preview!

Are you curious yet?

More is coming...

What exactly? VisionX cloud infrastructure and automatic cloud deployment!

Es fluttert gewaltig - Artikel

Es gibt seit kurzem einen neuen Artikel über unsere brandneue Flutter App in der deutschen Presse. Hier das Intro:

Wer eine App für mobile Geräte entwickeln möchte, steht zumindest vor einer wichtigen Frage: Mit welcher Technologie soll die App realisiert werden? Da es aktuell verschiedenste Möglichkeiten gibt, ist die Antwort nicht sofort klar. Mit diesem Problem war das Framework-Team von SIB Visions ebenfalls konfrontiert, als es darum ging, einen Client für das Open Source Application Framework JVx zu entwickeln. Wie
vor allem was umgesetzt wurde, wird ...

Der vollständige Artikel ist hier zu finden. Prädikat lesenswert :)

VisionX with Docker support

The next VisionX release will support Docker. If you are not familiar with Docker, it's worth a try. It offers super fast deployment and app delivery without additional hardware or software installation. If you're interested in Docker simply use Google.

The whole Docker technology is a big plus for application developers and also for our low-code platform VisionX. We will support Docker deployment with our next release.

Every application, created with VisionX, requires a Java application server like Tomcat and a relational database like Postgresql in order to run. If you don't own such runtime environment, it might be tricky to roll out your application! Sure, there are very cheap hosting provider which offers root server and application hosting, but this requires lots of IT skills. With docker, deployment is getting easier for you.

With next VisionX, it will be possible to create a pre-defined docker container in seconds. Use this container to create your own docker image and use Docker to run your application.

We'll show you some impressions how this will work:

Docker support

And it will also be possible to use existing Docker Hosting Provider to run your application.
We tried it out with sloppy.io:

sloppy.io

Our docker container uses our own Tomcat definition, which can be found here. Feel free to use our tomcat image in your environment. It solves some common configuration problems like custom port definition, username, password.

VisionX update release 5.4.3900 is available

VisionX 5.4.3900 is available!

It's a small bugfix release with following improvements:

  • Fixed using server storage in combobox

    It wasn't possible to use a server storage in the data wizard.

  • FilterEditor API improved

    The FilterEditor API change was needed to support new features of Profiles and Filter AddOn. It's now possible to better group And/Or and to disable "expert mode".

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.

Adding new paths for native libraries at runtime in Java

If you want to add some native libraries at runtime, it was tricky with Java 8+:

This was a valid solution:

final Field fldUsrPaths = ClassLoader.class.getDeclaredField("usr_paths");
fldUsrPaths.setAccessible(true);
 
//get array of paths
final String[] saPath = (String[])fldUsrPaths.get(null);
 
//check if the path to add is already present
for (String path : saPath)
{
    if (path.equals(pPath))
    {
        return;
    }
}
 
//add the new path
final String[] saNewPaths = Arrays.copyOf(saPath, saPath.length + 1);
saNewPaths[saNewPaths.length - 1] = pPath;
fldUsrPaths.set(null, saNewPaths);

Since Java 10+ it's not possible anymore, because of: JDK-8210522
Some details from Stackoverflow

If someone still needs a solution for Java 10+, here it is:

Lookup cl = MethodHandles.privateLookupIn(ClassLoader.class, MethodHandles.lookup());
VarHandle usr_paths = cl.findStaticVarHandle(ClassLoader.class, "usr_paths", String[].class);
String[] path = (String[])usr_paths.get();

...

usr_paths.set(new String[] {"A", "B"});

This code won't work if you are using Java 8. If you want support for e.g. Java < 10, simply use reflection :)
Sounds simple, but it is not simple.....

Here's a working solution: toPDF project (search for addLibraryPath(String pPath)).

The code in detail:

Class<?> clsMHandles = Class.forName("java.lang.invoke.MethodHandles");
       
Method mStaticLookup = clsMHandles.getMethod("lookup");
Object oStaticLookup = mStaticLookup.invoke(null);

Method mLookup = clsMHandles.getMethod("privateLookupIn", Class.class, Class.forName("java.lang.invoke.MethodHandles$Lookup"));
Object oLookup = mLookup.invoke(null, ClassLoader.class, oStaticLookup);

Method mFindStatic = oLookup.getClass().getMethod("findStaticVarHandle", Class.class, String.class, Class.class);

Object oVarHandle = mFindStatic.invoke(oLookup, ClassLoader.class, "usr_paths", String[].class);

//MethodHandle mh = MethodHandles.lookup().findVirtual(VarHandle.class, "get", MethodType.methodType(Object.class));
//mh.invoke(oVarHandle);

Method mFindVirtual = oStaticLookup.getClass().getMethod("findVirtual", Class.class, String.class, Class.forName("java.lang.invoke.MethodType"));

Class<?> clsMethodType = Class.forName("java.lang.invoke.MethodType");
Method mMethodType = clsMethodType.getMethod("methodType", Class.class);

Object oMethodHandleGet = mFindVirtual.invoke(oStaticLookup, Class.forName("java.lang.invoke.VarHandle"), "get", mMethodType.invoke(null, Object.class));

Method mMethodHandleGet = oMethodHandleGet.getClass().getMethod("invokeWithArguments", Object[].class);

String[] saPath = (String[])mMethodHandleGet.invoke(oMethodHandleGet, new Object[] {new Object[] {oVarHandle}});

//check if the path to add is already present
for (String path : saPath)
{
    if (path.equals(pPath))
    {
        return;
    }
}

//add the new path
final String[] saNewPaths = Arrays.copyOf(saPath, saPath.length + 1);
saNewPaths[saNewPaths.length - 1] = pPath;

//MethodHandle mh = MethodHandles.lookup().findVirtual(VarHandle.class, "set", MethodType.methodType(Void.class, Object[].class));
//mh.invoke(oVarHandle, new String[] {"GEHT"});

mMethodType = clsMethodType.getMethod("methodType", Class.class, Class.class);

Object oMethodHandleSet = mFindVirtual.invoke(oStaticLookup, Class.forName("java.lang.invoke.VarHandle"), "set", mMethodType.invoke(null, Void.class, Object[].class));

Method mMethodHandleSet = oMethodHandleSet.getClass().getMethod("invokeWithArguments", Object[].class);

mMethodHandleSet.invoke(oMethodHandleSet, new Object[] {new Object[] {oVarHandle, saNewPaths}});

Not simple!!!

Summarized: It's not easy but it's still possible. So.... why are things getting more and more complex?

VisionX 5.4 Update release is available

VisionX 5.4.2450 is available!

It's a small update release with following improvements:

  • MySql database support

    We fixed a problem with app export (from embedded PostgreSql) and re-import into a MySql database. It wasn't possible to configure combobox columns.

  • Popup Menu button click

    Sometimes, a click on the arrow of a popup menu button, didn't show the popup and triggered the button action instead.

  • Screen generation

    A new screen with only one table was generated with an additional "white" panel.

  • Filter AddOn update

    We improved the Filter AddOn and now support And/Or grouping. It's also possible to save and load filter settings.

    Some impressions:

    Filter AddOn

    Filter AddOn

    Load settings

    Load settings

  • Filter Editor API

    We improved our Filter Editor API. It's now possible to define the Full-text Filter column names and also which column names can be filtered in general. It's possible to group filter editors by condition (or, and, ...). This enhancement is relevant for developers.

VisionX 5.4 is available

VisionX 5.4.1835 is available!

It's a great release with big changes.

The new VisionX version got updates of used open source libraries. It runs with openJDK 12 and supports openJDK 14. It comes with awesome responsive UI support for desktop, web and mobile. We support our brand new mobile UI which is still under development.

What's different?

  • New MorphPanel with full responsive support

    This feature is available for Desktop, Web and Mobile devices. Create only one screen to support all targets.

    Responsive for Desktop

    Responsive for Desktop

    Web settings

    Web settings

    Mobile settings

    Mobile settings

  • Responsive option for Panels

    Simply en/disable the responsive feature for single panels.

    Responsive option

    Responsive option

  • MorphPanel navigation bar

    The MorphPanel shows a small navigation bar directly in the screen. You can use this bar to switch between the tabs without opening the customizer every time.

    Morph Panel navigation

    Morph Panel navigation

  • New work-screen wizard

    We have 4 types of screens: Table with Detail form, Table, Form, Empty. Each type has different layout options for Web, Desktop, Mobile and Universal. The difference are gaps and margins and default settings of elements. Some layouts include full-text search and some don't include search options.

    New screen wizard

    New screen wizard

  • New customizable screen generators

    The screen generators are customizable for developers. Simply create your own or extend an existing generator and use it directly in VisionX. Simply create your own definition file like this one:

    <?xml version="1.0" encoding="UTF-8"?>

    <generator>
      <group text="Table with detail form"
             image="/c/s/v/i/w/w/category_tableform.png">
        <entry class="com.sibvisions.visionx.uigenerator.WebTableFormUIGenerator"
               text="Web layout"
               image="/c/s/v/i/w/w//group_web.png" />
        <entry class="com.sibvisions.visionx.uigenerator.MobileTableFormUIGenerator"
               text="Mobile layout"
               image="/c/s/v/i/w/w//group_mobile.png" />
        <entry class="com.sibvisions.visionx.uigenerator.TableFormUIGenerator"
               text="Desktop layout"
               image="/c/s/v/i/w/w//group_desktop.png" />
        <entry class="c.s.visionx.uigenerator.UniversalTableFormUIGenerator"
               text="Universal layout"
               image="/c/s/v/i/w/w//group_universal.png" />
      </group>
    </generator>

  • Live Preview without any differences

    We improved our UI for browsers. New layouts, better performance and same features.

  • Shared folder support

    An awesome new feature is the shared folder support for your projects if you are a developer. Simply put your POJOs or Beans in the new shared folder and use this classes in your client or server classes.

  • New domain management

    Change pre-defined or create custom datatypes. The screen is available in VisionX' Administration menu.

    Domain management

    Domain management

  • Support for latest Workflow AddOn (3.0)
  • Performance improvement of Designer

This is how the responsive mode works on Desktop

Responsive mode

Some impressions of our new mobile client are available here

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.

VisionX 5.4 is on the way

I'm happy to announce that VisionX 5.4 is on the way. The code is complete and tested. We have some additional tasks to do, but it's ready!

It's one of the really cool things. It has a bunch of new lib versions and got updates for mobility. The web UI of applications is faster than before and we have full responsive support built-in. Not only for web applications, also for desktop applications.

Another big milestone is the new mobile client. It was built from scratch. It's a wonderful piece of software, built with Flutter and Dart. It's one native app for iOS and Android. We will replace the old client in the near future. The new client supports all our layout features and much more... it's modern!

Here are some impressions

New screen wizard

New screen wizard

Responsive for Desktop

Responsive for Desktop

Web settings

Web settings

Mobile settings

Mobile settings

Responsive mode

Some impressions of our new mobile client

What else is new?

Be patient :)

JVx Icon redesign

Our good old JVx icon got a new design for 2020! It's also the new icon for our brand new

The old icon:


JVx Icon pre 2020

The new icon:


JVx 2020

The icon now contains the open source hint in the middle, as closed circle, and also our company colors. We love it.

VisionX 5.3 is available

VisionX 5.3.2 is available!

It's a minor update release with big changes.
The release got updates of open source libraries like JVx and Vaadin UI.

But the biggest changes are the integrated Java 12 support. VisionX 5.3 comes with and runs under Java 12 (openJDK).

What's different?

  • Performance improvement of Designer
  • Performance improvement of HTML5 UI
  • New App Elements

    Save All Changes, Reload All Changes, Advanced Panel and Advanced Group Panel

  • REST documentation contains admin services
  • Bundled open JDK 12
  • Support for latest Workflow AddOn (1.5)

The download area already contains links to latest VisionX binaries.

Please report any problems as usual and have fun with VisionX.