Why prefer XoJo instead of B4x?

I want to know why you prefer XoJo instead using B4x for Desktop, Android, IOS and Web? All of this can be done with B4x, Desktop as Java App but with native packing for Mac, Linux and Windows, IOS and Android are native Apps. WebApps can be done as Server based Webapp or PWA with B4J Banano and as server based with B4j Abmaterial.
Under this circumstances I can not understand why so many people are standing behind xojo with all of it’s errors and problems?

B4J development can only be done in Windows.
Since I have a Mac and want to develop on in macOS and not in Windows, B4J doesn’t work for me.
That doesn’t mean that Xojo is sacred for me.
If it was possible to develop in macOS, I would definitely try B4J.


one of my fears before choosing B4X, was the java part of this, because if b4j do not have a component already implemented, you need to program a wrapper in java to make a java component available to b4j.

I think maybe that can also be part of the reason people shy away

Not needing Java installs seems a good argument. I had a friend that had an app provided by the government that needed a minimum java JVM version x.x and needed to install another government provided app that demanded a minimum version y.y and that app was allegedly crashing or not working due to this. So he upgraded the JRE and ended with 2 broken apps. :laughing:

We are definitively developing with B4J, B4A and B4I on Linux and MacOS with codeweavers crossover. It makes no big problems and it is not a big deal at all.

But writing a Wrapper is not this complex, isn’t it so that this argument is only when you are looking from outside scary but not from the inside. Next is: what you want to have as a plugin what you have in Xojo but not in B4J?

good point

Funny that there is always somebody who ‘has a friend’. No personal attack, just a general observation in such discussions. Worked with B4X for many years, never had a similar problem and our product runs with tens of thousands of clients. Guess this was really a fringe case. Java is very backwards compatible.

Writing wrappers is indeed not difficult, and many were already done by the (many more than Xojo has) library writers. Erel having Open Sourced many of his libs can be a great asset for people to learn. Some can be written very fast with the Simple Library Compiler, others will require some more work in Java. But I don’t see any difference here to having to write them in c/c++ in Xojo. They have promised some easier way to do it in Xojo code itself (similar to B4X’s b4xlibs which exists for years) but we are still waiting.

The only thing I can think of to ever use it again was for the single EXE thing. That was a joy to deploy in REALBasic, but unfortunately lost in its transition to Xojo. So, unless to support (patch) some legacy app we’ve written back in the days and has not yet been rewritten in B4X, I really hope I never have to open that buggy thing again… :wink:

Just checking for Updates and the need in B4J, beginning with MBS:
Database Connectors: there is no need for in B4J cause you use directly the Java connectors
Reports: use Jasper Reports with the given Wrapper
PDF: use B4J PDF creator
Barcode: use B4J Barcodes Library
compression: native JAVA Support
CURL: native Support
Encryption: use native
Graphic Magic: functionality native support by JAVA and B4J
Images: native Support
The Hardware classes and Network classes can used natively
Spellcheck: use native implemented
Valentina: use native components from Valentina
Physics: use the Java math kernel
3D Graphics / open gl: native supported

This are Answers to the question of Plugins. Not to forget: you can use embedded Java Code as well.

The same on my site: I will only open it for cold cases and never for new projects. I have tons of errors and Bugs noticed (more then 200) where around 80 are more or less showstoppers. That drives a dead cow crazy an old girlfriend of mine said in situations like this.

And: with your Work there is finally a nice way to write Webapps and progressive Webapps (sorry: there are two ways you builded: BANANO and ABMaterial.

1 Like

And in the next release of BANano, you will be able to create ABMBANanoLibraries (for the sake of a better name :wink:, libraries written in BANano that you can just load and use in ABM). So that way, next to custom components that already exist in ABM, it will also have plugins.

Wahaaaa yea nice. It will come to the point where we will have a nice environment!

That’s a fact. Like it or not. He’s still my friend, but that was something that happened in the past. Your assessment made me check a part of the conversation I had with him, the exact date was 28 september 2020. And this was the shit app he was attempting to install on his machine and failing miserably https://www.tse.jus.br/internet/arquivos/spce/SPCE-Cadastro%202020-versao-4.8.06.tar.gz

1 Like

As I said, a fringe case. I just unzipped it (no installation needed), started the bat file and it worked without a problem. I didn’t have to do anything java related (I run JRE 11 and they said in their instructions 8 or later so that is fine).

We had back in the days also problems with RB/Xojo apps with client computers on which we just couldn’t get it started. Conclusion was they had a really messed up computer. Such things do happen.

And I do apologize if I have offended you or your friend. I was only pointing out this is often used as hearsay.

I just tried B4J in Crossover (Trial version) on Mac (Catalina) and didn’t work very well for me, bummer. Screen flashes constantly moving from one UI element to another. Using Crossover 20.0.4.

Any ideas?

At Monday I am back in office I will check. Which dotnet you have installed?

Well, Xojo did it again recentrly when they decided to use the Windows Universal Runtime :man_facepalming:t2:. It worked on some machines, it needed a lot of time to update some others and in 5% it will not install the runtime. So, all the runtime DLLs now go alongside the exe :rofl:

Anyway, Why prefer XoJo instead of B4X? :thinking: I am using B4A, B4i and even a little of B4R. But, B4J, I still have some concers about the easiness to decompile it and reveal sensitive data. It is hard to implement a license if anyone can see your code.


Only chance is to build obfuscated. Here is reels idea:
Process globals strings are obfuscated. Check the Java source code and you will see that it is not easy to see the strings.
However a hacker can also decompile the source code and run it with a debugger and then they will have access to all the stored information.

If the server is not using SSL then a hacker could use a network sniffer to see the keys.

So, I prefere to mount my keys in runtime when they are needed and storing them in mathematical functions. But you even don’t have this Security with xojo.

You should have 5.x for the latest b4j on crossover but let me check on our Mac how we’ve done it