B4* to Java

dilettante

Active Member
Licensed User
Longtime User
Is anyone using or has successfully used the B4 products as a stepping stone to Java?

I would think that some things like library development might involve using both in tandem. I suppose that could lead to a move to straight Java for everything.

I'm getting customer feedback that B4A is great and all, but they don't want their software tied to a small-company product that may last for many years (or not) or may change over time until the old source no longer compiles. I think what's going on is that a lot of smaller companies have minimal programming staff and rely on contractors, and they don't want to get locked in to a small pool of contract workers.

Has anyone else had thoughts along these lines?
 

lemonisdead

Well-Known Member
Licensed User
Longtime User
hey don't want their software tied to a small-company product that may last for many years
The biggest LOL for your customers ! Mine never care about which IDE I did use and are only happy with the software they bought (till it works).
And going to Java from the software I did choose because I haden't Java to learn was never in my mind.

Has anyone else had thoughts along these lines?
Nope, sorry. Or perhaps... don't tell your customers the IDE or tools you use... Or don't sell them the sources... I never, in 20 years as a freelance, but never heard a client ask me for the sources. Yours are probably really big companies ?
 

sorex

Expert
Licensed User
Longtime User
@lemonisdead : that's because you work directly for your customer. if you have someone inbetween they want that someone else can work on it when you're not available (anymore). As most Android developers still use Eclipse they look down on other methods even when the resulting app is the same and project could be done in shorter time frames.
 

dilettante

Active Member
Licensed User
Longtime User
Most of what I'm writing are applications for internal private use within a company. Most of them have no use for anything to be published to the Play Store because the applications are strictly in-house line of business applications used by employees.

They like what Android brings to the table, primary among these features is the ease of deployment from their own servers.

But they have also been pleased that despite some cries of "fragmentation" their applications have enjoyed a good long life across many versions of Android. Maintenance isn't required very often just to keep the apps working, and where it has been the changes are pretty quick and easy to do. However they want this to continue for a long time, and they use in-house programmers to make routine modifications.

So long app life is very high on their list of requirements. This isn't true of widely published fart apps, which get orphaned left and right. But I don't have the luxury of short application life cycles.


These customers don't look down on B4A, and in fact appreciate the way it helped them "retread" their old Visual Basic (classic and .Net) programmers as Android developers. At this point one of them has no Windows machines at all anymore except for the ones developers use: everyone else is using Android or ChromeOS or a handful of Macs.

But their concern is what happens five years out. This is why they want to hedge their bets and transition their programmers to working in both B4X and in Java. This isn't much different from larger customer shops where they require programmers to work on programs in VB.Net, C#, and even classic VB6 all at the same time.


The extreme allergic reaction shown in some of the replies above makes me wonder. But I guess this is pretty common to see among strong proponents of a single language, perhaps especially one that attracts a lot of hobbyists.
 

dilettante

Active Member
Licensed User
Longtime User
Nope, sorry. Or perhaps... don't tell your customers the IDE or tools you use... Or don't sell them the sources... I never, in 20 years as a freelance, but never heard a client ask me for the sources. Yours are probably really big companies ?

One of them has about 50 employees, but the others have 200 or more. I don't think I have ever had a contract that didn't require turning over source code though and that seems completely bizarre to me. Of course I use that as a negotiating point to get a higher hourly rate as well. Heck, they even pay me to train their programming staff and work with their testers.
 

Beja

Expert
Licensed User
Longtime User
This is why they want to hedge their bets and transition their programmers to working in both B4X and in Java.

B4X is basically a layer above Java.. in other words, Java in VB syntax.. so if they wanted pure java then they can take the B4X generated Java code and compile it by themselves to Jar files, or edit it in Java, but if they want to spend more time in developing the same project in Java then -good for them.
 

thedesolatesoul

Expert
Licensed User
Longtime User
Well I would expect some fanboism if you post this question in a forum about B4A ;)

I think the above replies take a very naive approach. I think you are right, lets say you develop your app with B4A and the company gets dependent on it, 2 years later google decides to deprecate some methods, and you are left with an app that cannot run on later versions. It will still work uptil that particular version, but you are left with no upgrade path.
Considering you are looking at long term prospects, I am sure you would run on newer and faster devices.

The simple fact is that you do need maintained code, and you need the skillset to keep it maintained. Google has time and again broken compatibility with previous versions of Android and who is to say B4A apps will not work on Android6 without a fix from Erel?
Have we not seen MsgBox being broken and fixed on Android4 and fixes for touchInterception etc?

So the answer is that yes, we depend on the single point of failure: Erel.

Is anyone using or has successfully used the B4 products as a stepping stone to Java?
Some have ascended to the JavaMasterRace. Some have taken up a dual approach.
It just depends on how complicated your java developers are willing to go into, will you do dependency injection, code profiling, event buses etc?
For me, the best approach is the dual approach where I can write the front-end in B4A, create customviews in B4A etc, but sometimes doing things in Java. Those are usually threading stuff, classes not exposed in B4A, or wrapping a cool library of the 1000s available on github that i dont have the time to rewrite in b4a.

B4X is basically a layer above Java.. in other words, Java in VB syntax.. so if they wanted pure java then they can take the B4X generated Java code and compile it by themselves to Jar files, or edit it in Java, but if they want to spend more time in developing the same project in Java then good for them.
That is a very simplistic view. The B4A generated Java depends on the B4A related framework and makes many assumptions that may not allow it to work outside that environment.
 

LucaMs

Expert
Licensed User
Longtime User
That is a very simplistic view. The B4A generated Java depends on the B4A related framework and makes many assumptions that may not allow it to work outside that environment.

...until the day when Anywhere Software will release a B4A app ---> Java app converter.

And finally, from that day... we'll depend on Anywhere anyway :D
 

Beja

Expert
Licensed User
Longtime User
If Google brakes their code then apps written in Java will also not work. After all, b4a is first interpreted to Java and then it is the Java code that's compiled to Jar.. Duh!

Edit:
Correct me if I am wrong..
B4A is completely transparent to Android.
 
Last edited:

Beja

Expert
Licensed User
Longtime User
@thedesolatesoul,
it's sad to know Android versions are not backward compatible with older version.. MS DOS EXEs can still run under the latest 64-bit Windows.
In the late seventies and early eighties, IBM wanted to choose a microprocessor for their Personal Computer, and they was considering Zilog Z-80,
But they found Z-80 architecture is not open to expansion, which means the hardware and instruction set of subsequent versions of the CPU can not run codes written in previous versions, so the decided to use Intel 8086.
 

thedesolatesoul

Expert
Licensed User
Longtime User
I may have worded it incorrectly but this is hard subject to explain, and there are many things and scenarios to consider.
Things are backwards compatible but degraded, sometimes they dont look/feel the same. Sometimes some methods are completely removed, but alternatives are given (and you have to detect which OS its running on).
But to remain on topic, the OPs concern is there a guarantee that Erel will keep supporting B4A for the next 5 years?
The answer is that no, there is no guarantee even that we can find someone like Erel who can take this forward.
 

Beja

Expert
Licensed User
Longtime User
I don't think the issue is with Erel, but with Android. A few days ago I uploaded to this forum a game that I wrote in Quick Basic and DOS 6.22 back in 1994, it is still running like a charm on Windows 8.1/. I have never updated it for any version of Windows. So it's not about Erel, but you and me must stand guard our apps and watch Android changes so we can update it. otherwise our customers will be unable to use it.. Can anyone guarantees that?
We can not assume Erel will abandon b4x without assuming we ourselves may abandon our apps and leave our customers hanging on the air... in other words, we can not guarantee that one day, for any reason, we stop to support our apps by implementing new Android changes and upload the updates to the market.
 

dilettante

Active Member
Licensed User
Longtime User
An individual pr even a small group can be hit by a bus or get an offer they can't refuse... and be off to one new thing or another. It can happen any time.

But setting all that aside:

I wasn't suggesting anyone should jump ship and start writing Java exclusively. I was just asking whether people thought the B4X products can be used to transition programmers with a Basic background into multi-language programmers with Java as the second language.

For some reason we're running off down several tangeants. :D Sadly this does begin to stink a bit of insecure fanboyism [sp?].
 

Beja

Expert
Licensed User
Longtime User
I remembered two groups of lawyers lengthy discussions on which party will be responsible for property damage if Comet Halley hit Earth..
We are about 70k users of these tools.. but our customers are more that that.. if a single developer with 2 million users suddenly stopped while b4a is well supported! then you can imagine.. the impact is bigger than when SA stops supporting b4x.. and this is just by one developer.
 

lemonisdead

Well-Known Member
Licensed User
Longtime User
@Erel The naive fangirl who stinks would like to ask if one of the major advantage advertised about Java was not to be cross platform ?
Wishing you the best for the 5 next years
 

Beja

Expert
Licensed User
Longtime User
@dilettante
An individual pr even a small group can be hit by a bus or get an offer they can't refuse... and be off to one new thing or another. It can happen any time.
This is exactly what I am talking about.. if I died tomorrow, then who is going to support my customers? I understand you are working with a group of developers in a company and others my continue with your project, but how many people in the company? 100,000? a million.. so many individual developers have their user base in these numbers.. my question is still valid: if a developer stopped today supporting his/her product, while b4x is updated and well supported, then who's going to take over? you will end up with customers losing there investment and looking for clone apps or ask other b4a developers to write similar apps for them.
I also suggested that you or your company will not lose anything in the worst case scenario, because if Android changed code and there is no support by b4a, then still useb4x RAD tools, compile it and then open the generated Java code in Jave IDE and make the necessary updates.. this still can save you time in developing in Java from scratch.
 
Top