B4J Question Can't decide the way to go!

vfafou

Active Member
Licensed User
Hello!

I have made a taxi dispatching app with a mobile driver app (B4A), a mobile consumer app (B4A,B4i) and I have a Call Center management app written 16 years ago in old VB6.
I need to rewrite the Call Center software and I'll go - of course - with B4J.
My case is the following:
Assuming that this app has to be highly responsive and multitasking (the operator needs to be able to do simultaneous functions within the app), I can't figure out if ABMaterial framework is a solution, or I have to go with B4J desktop.

The desktop/web app must support:
1. Serial communications because of the UHF transmitters system of the taxi company
2. Telephony PBX functions (e.g. automatic Caller ID recognition)
3. Surely the ability to communicate directly with the drivers

Another idea is to go with B4A and use Android Boxes as workstations!

Any idea/help/opinion is highly appreciated!

Thank you in advance.
 

techknight

Well-Known Member
Licensed User
Well if you use ABMaterial (which works great with serial), the serial system would have be server-side. You cant as far as I am aware, work with any hardware at all on the client machine from the web interface. So keep this in mind.

Outside of that, I would highly recommend using ABMaterial because its a web app system so anyone access it from anywhere, and you can even use WebSockets/MQTT between the webapp software itself, and your mobile devices/apps for real-time communications.

Along with MySQL/SQLlite/Firebase, etc database support for all your records and configuration storage. You can also create an API that interfaces between everything and your ABMaterial server software, so your mobile devices can communicate all details to, and from the server, so then its all managed at one point. If there is a bug, or a feature update, you can perform this update on the server, and everyone is affected/updated at once. as far as PBX, well good luck there. Anything you do with this would need written by you, and handled server side and directed over the correct websocket to the correct user. Ill leave that one up to you.

It also has its disadvantages of course, if your network goes offline or if its over the internet and its offline, you wont have any communication ability and nobody will be able to use the software at all until the systems come back online unless you do some sort of App local storage for synchronization purposes.

The other issue is, you need to keep it up to date constantly. the Web/Cloud in general is a very fluid ecosystem that is constantly moving in one direction so as browsers/javascript/etc change, you gotta keep yoru ABMaterial library updated

The other issue is if the Author drops support, or kills it off, then you would have to maintain it yourself or depend on the community to keep it up to date, but you can say that in general with any software, including B4J. If Erel got hit by a bus and died tomorrow, Then what? VB6 is already in this state as an orphan child put out to pasture with it's parents hands washed of it, so..... Things to think about...

Also B4J, and Java in general is very abstracted because of its unique ability to be cross-platform, this makes interfacing with outside drivers very difficult without going through hoops and bounds. you have the JNI interface and a few others to work with dynamic libraries and native code to get things done. (platform specific), And then you would need to write a wrapper that would link this native library into the B4J environment, Whereas with VB6 you can simply link in a DLL and expose its functions to do things. As said above, this isnt so simple with B4J/Java. Its not totally impossible, the jSerial library does this with JSSC so you can use that for reference.

There may be other cons, but personally they do not outweigh the Pros in my own opinion, but an opinion formed would be the result of circumstance.
 
Last edited:

vfafou

Active Member
Licensed User
Thank you techknight for your response!
The pros you have mentioned are the cause of my non-decision!
On the other hand, referring to ABMaterial framework, what about the parallel actions of the app operator? If a form is open in front of the main screen of the app, is it possible to send a keystroke to the main screen?
Is it possible to have 4 or 5 forms open at the same time?
 

techknight

Well-Known Member
Licensed User
Thank you techknight for your response!
The pros you have mentioned are the cause of my non-decision!
On the other hand, referring to ABMaterial framework, what about the parallel actions of the app operator? If a form is open in front of the main screen of the app, is it possible to send a keystroke to the main screen?
Is it possible to have 4 or 5 forms open at the same time?
You would have to have pop-ups or something along those lines. Its doable, but I dont know exactly how.
 

alwaysbusy

Expert
Licensed User
The other issue is if the Author drops support, or kills it off
Precautions have been taking care of in case of an emergency where I am unable to give further support. I send the source code of the ABM library to Erel on a regular basis and he has my permission to do whatever he sees fit with it in case something happens to me. Same goes for the BANano library. All the software we write in my day job are written with ABM so killing it off is not an option as it is our weapon of choice for many, many years to come.
 

alwaysbusy

Expert
Licensed User
If a form is open in front of the main screen of the app, is it possible to send a keystroke to the main screen?
The answer depends on your setup I guess. If you run the ABM/B4J app on an external server and connect to it via a browser on a machine then the answer is no. For security reasons a brwoser will not allow you to do anything outside a browser.

If however you run the ABM/B4J app on the same machine as the browser that connects, then yes. You have the full power of B4J at your disposal as ABM is only the UI part of your app. All commands end up in the server app (which is pure B4J) so this can act accordingly.

Is it possible to have 4 or 5 forms open at the same time?
Browsers apps are not really created as classical desktop apps. There are two ways this can go: using ABMModalSheets (but only one can be active at the same time), or the preferred way, using multiple tabs in the browser (this is what we use in our apps). The user is then free to do what he wants (he can drag the tab out of the browser to create a new window for example).
 

rboeck

Well-Known Member
Licensed User
If mqtt is usefull for your current vb6 project, together with my son we created an mqtt com bridge for vb6. We use the same concept like the mqtt library in b4j; so its easier for you expand your current system with b4a apps. BTW, it was my son's first project in C#.
 

vfafou

Active Member
Licensed User
At first, I would like to thank you Alain for your detailed answers! After your "instructions" it seems that the best way to fit my needs is the B4J desktop. I think it would be easier to make all this functionality I need with a pure desktop app.

rboeck, I found very interesting your MQTT bridge for VB6 but I want to get completely rid of the old VB6 environment, for compatibility and maintenance reasons.
My only problem is that the old desktop app is a large one and it needs very much time to rewrite it.
 

mfstuart

Active Member
Licensed User
vfafou,
It is possible to build a B4J desktop app that when a user clicks on a menu button in the app, that the push of the button creates a tab and opens the form in the tab.
I have built such an app and it works great.
The tabs are closeable with an X on the tab. You can make a tab so that it is not closeable - no X on the tab. I have that as a "Home" tab.

So this allows the user to open a lot of tabs, as many as you have menu buttons or buttons anywhere on a form.
If you wish to open a modal form, that is possible as well.
MultiTabInterface.png
 

vfafou

Active Member
Licensed User
Hello mfstuart!
Thank you for your response!
I have not decided the look and feel of my new app yet...
One very early thought is that I would like to have the Material theme.
A second thought is that it is needed to be very well designed to be as straight forward as possible for the end user.
The multi-tab design is one of my preferable looks, so it is possible to use your suggestion!
 
Top