Skip to main content

Rescue the (java) world - help needed

5 replies [Last post]
hohwille
Offline
Joined: 2005-08-05
Points: 0

IT is always in motion. In the last decade the web has made enmourmous changes.
Also smartphones and tables have caused dramatical changes.

Jave was initially designed as the language for the web. Every browser
used to have java on board and has been able to render applets.
However the entire java world overlsept the chance to improve this
technology with DOM access or other features to address the actual
needs of web-applications. Maybe JavaFx could be
the rescue - maybe not...

Fate and fortune have caused that HTML and JavaScript are now
(miss-)used to realize rich internet applications with endless pain
for developers. Most people seem to simply accept this aberration
and now start to make JavaScript the universal programming language on
client and server. If you see what is going on with node.js it seems
to me like going back to the roots and make the same design mistakes (e.g.
direct mysql access without abstraction like JPA) again without learning
from the state of the art.

I scream it out: Let us stop this madness!!!

Well, these people can do what ever they want but the java community
needs to offer a true alternative. So here is where I need your help,
the help of many good open-source developers. I am willing and full of
energy to create a meta-UI-framework in Java. I have put all my experience
of rich client development into a IMHO great design and started an
implementation in my open-source project. Please have a look.
You can get started here to get the philosophy:
http://m-m-m.sourceforge.net/apidocs/net/sf/mmm/client/ui/api/package-su...

Some words about the history of client development in Java:
Java started with Swing as the universal and interoperable native client technology.
I still think it is quite nice. However others did not like it and created
SWT, JFace and EclipseRCP as an alternative. For a long time such technologies
where used for rich clients while web-technology with all its limitations was
used for thin-clients. Managers always used to think that for easy distribution
of clients and reaching the largest audience you need web-clients. Therefore
JavaWebStart never reached its potential and is not commonly known.
Everything changed with the web 2.0 where JavaScript developers where brave
and crazy enough to build all the features of a native client within a web-client.
While this was insane from the start and a missuse of technology initially not
designed for such purpose the enitre world ran for this hype. It took me some
time till I understood that there is absolutely no chance to stop this trend.
Mobile devices and tables came in making all this a lot worse (I mean its absolutely
cool for the users but no fun for developers and architects). So finally it
has actually become true what managers started to say about web-technology.
Additionally one could observe that a single decision of Apple could sweep
away Flash from the market within about a year or two. This was an indicator
that it seems that bringing a reasonable programming model into the browser
via a vendor-plugin technology (including silverlight, etc.) has finally failed.
We will see what happens to Google Dart...

Java has millions of web-frameworks. This is an obvious indicator that there
is NOT a single solution that solves all the real problems. Most of them
focus und widgets and "think" in screens. However, for developing a large-scale
(web-)client-application you need to think in dialogs and not screens or
HTML pages.
As I had to follow the web 2.0 hype I picked GWT which is a great technology
but has a major drawback: developer tests are extraordinary slow as starting
a large application in DevMode is taking too long.
JSF is nice but can, by design, not address the real needs of the RIA as state
and presentation should be fully on the client side.

To make everything even worse there are these apps for mobile devices.
If you want to reach a large number of users you need to support the three
major plattforms. Doing android is quite fine for java developers but
ObjectiveC without packages is a crime to developers. Maintaining the "same"
app with 3 totally different codebases on totally different operating systems
is a major drawback. Again web-technology wants to make the universal deal
and HTML(5) is going to support the possibilities of these apps. ChromeOS
is totally leading in this direction. Apache Cordova helps to make this
reality today.

So you might ask yourself. Wait a moment. This guy is saying that there are
too many web-frameworks and other solutions and therefore we should create yet
another new solution?

Yes and no. I do not want to create a UI-technology. I want to create a universal
API for UI-technology in Java. This is the most missing link and the major success
in Java itself have always been the good APIs like JPA and not the implemenations
like Date or Logging. A well designed and widely accepted API is the important key.

I also want to create implementations that adapt from this API to existing native
UI-technolgies. And I have already done this for GWT and in previous versions for
Swing and SWT. I see enough of my vision to say that it is really possible.
So in the long run you can write a client once and then run it as native Swing app
or build it for andorid or using GWT as web-app, etc.
This might sound crazy, but with enough abstraction this is possible.
Client programming is currently working in a way that the developer places widgets
in panels and organizes them on top or beside each other on the screen. However, if
you look at a client on a higher level you can see that there are high-level desing
patterns such as a master-detail panel. On "desktop applications" this is showing
a list of items (e.g. emails) and a details panel to view or edit the selected
item below or beside. On a smartphone you have the same pattern but with a list
and if you select an item the list slides away and the details panel slide in.
Do not expect magic that renders perfect results on every screen and device without
invest and manual optimizations. But even if you build a client for a single target
technology this approach will give you a lot of safty for the invest of your
(large) client application because you can switch to another technology with
reasonable effort. It would already be a great help if only the common sense
is available via a common API. Every UI-toolkit offers buttons, text-input,
combo-box, etc. But currently we only have implementations like Swing, GWT,
SmartGWT, GXT, etc. that all have the same things with different APIs.
Without such API and the chance to switch an implementation no manager or architect
would even try JavaFX or whatever for a really large project. The future is to
unsure and open.

I know very well that I can not offer this safty with an open-source codebase but no community.
But if many others join in and this can become a apache or java.net project or
even a JSR the future is open and Java has a great oportunity to come back to
the client and allow to use the same language both on client and server offering a
consistent model of transfer-objects and resuing code such as validation and other
business logic.

One could say - we do not need a programming API but a standard description format
to define dialogs in resource files. Belive me that the programming API has to
be first to allow the required dynamics. But this will be the next topic then :)

We all remeber the times when many users disabled JavaScript in the browser.
Now the trend is going to ban Java from the browser.
But never forget: Nothing is as sure as the change.

I want you to discuss, contribute, support, or spread.
Please help to rescue the (Java-)world!

I belive in Java not because it is the best programming language but because
it is simple, open, has a great eco-system and an awesome community.

BTW: Do not be misslead by the name of my OSS project. I wanted to write
a multi-media-manager but as a seeker of truth I first needed the proper
infrastructure to build on. This is where I seem to end but I really want to make it happen.

Best regards
Joerg

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
hohwille
Offline
Joined: 2005-08-05
Points: 0

I got many mails from admin@java.net with this message:

Someone has commented on your post: Rescue the (java) world - help needed

However I can not see any replies in this form, so I am going to test it myself.
In case you are interested, mail me directly (hohwille at users.sourceforge.net) or follow the project site (http://m-m-m.sf.et).

tonya_rae_moore
Offline
Administrator
Joined: 2011-05-20
Points: 0

Hi, hohwille. We seem to have experienced some kind of hiccup. A user replied to your post, got caught in the spam filter, replied several more times, I deleted all the dupes and left the original reply, and then the original disappeared. It seems to be specific (AFAIK) to this thread, so it's also entirely possible I messed up somewhere in the spam filter.

I asked the user to try posting the reply again, and we'll try to figure out if this is a site thing or ME (manager error).

Thank you,

Tonya R. Moore
Assistant Community Manager

GITNE
Offline
Joined: 2011-07-31
Points: 0

Generally speaking what you are hoping for is JavaFX on every major platform. Microsoft is actually doing it with Silverlight/XAML in their own eco-system from servers over web browsers to smartphones.

hohwille wrote:

Maybe JavaFx could be the rescue - maybe not...

It could be, if Oracle instead of fighting Google for patent and license infringement on Java would make JavaFX available on Android and possibly iOS and Windows Phone. Even more, Oracle should have ceased the opportunity and joined forces with Google on Android.
But, Oracle was stupid enough to waste time and resources to file lawsuits instead of using the time and convincing Google to make Java the foundation for Android, the already then foreseeable new Windows. Java could have been on the rise now.

Java could be so much more than just a product or runtime on top of some OS. It could be the standard or universal concept and implementation to do computing for at least the current century. Just like in mathematics concepts, methods and notations have evolved and have been adopted and declared standard by the scientific community.

hohwille wrote:

Fate and fortune have caused that HTML and JavaScript are now (miss-)used to realize rich internet applications with endless pain for developers. Most people seem to simply accept this aberration and now start to make JavaScript the universal programming language on
client and server. If you see what is going on with node.js it seems to me like going back to the roots and make the same design mistakes (e.g. direct mysql access without abstraction like JPA) again without learning from the state of the art.

I scream it out: Let us stop this madness!!!

Yeah, it is total madness. The concept of JavaScript reminds me of days when BASIC was the end-user's only way to do customized computing on their machines. And yet, many of todays managers and decision makers want to have highly complex interactive network oriented software implemented with some kind of modern BASIC. JavaScript was never intended nor designed to build rich internet applications on clients or complex client-server or distributed applications. And, there has not been any real progress to make it possible, just minor adjustments. Anybody who has at least some experience in large scale software development would not ever even think of using a language that lacks strong typing or at least some sort of typing for that kind of work (JavaScript, when applying a tight definition of a type, has no typing at all, it is a functional language).
Unfortunately, a lot of projects and frameworks outside of HTML5's specification scope have added to the mess and even enhanced the misjudgment that JavaScript might be a general purpose highly scalable language.

A lot of that you complain about or are unsatisfied with are home made problems by Oracle. I do not mean that Oracle is a bad company or has bad management per se, but Oracle still has not yet realized the full potential of Java, its openness and the consequences and business opportunities that arise form that. Your and many other people's doubts and worries about Java are even further reaching than they could be fixed with just an API or UI framework. Hence, I do not think it would be a good idea to start another UI framework. As far as UI and frameworks are concerned, JavaFX should be pushed, at least on Android. JavaFX might not be the best framework on earth, but it is an already well-known standard in the Java community.

As I see it, the only way to save Java, that is to prevent it from being marginalized (Java won't die entirely any soon), it is on Oracle to jump on Android and include it into its family, maybe as a specific edition. No matter what anyones opinion might be on Android, the lawsuit, Java, or the future of computing, one has to admit that Google has obviously hit the jackpot with Android. It is also foreseeable that Java might become replaced on Android by some Google language eventually, especially when Oracle keeps on bickering with lawsuits. When that happens Java will degrade to a back-end platform sooner or later entirely, because we already know that Java was neither able to win the browser nor really the desktop markets.

To sum it up: Go Joerg, go! But, my advice is not to waste time and effort on an n-th UI framework. Instead, demand from Oracle to keep up their promise (or that they bought with Java) to "Write once, run anywhere!". Demand from Oracle that they make Java available on at least the three major mobile platforms. Because it is actually on them to do that "business" job.

hohwille
Offline
Joined: 2005-08-05
Points: 0

Thanks for your detailed reply.

First of all I still think that it is not only Oracle to blame. What I meant with "overslept" addresses at least a decade and besides already Sun started to fight with Google. So I do not want to point my finger...

However, you are absolutely right that we should all understand that Google pushed Java with GWT and Android. Instead of suing we should thank them for that. Maybe then they would not have lost their interest in GWT and moved their energy towards Dart...

And yes - Please Oracle and everybody: Work on "Write once, run anywhere!" .

> Go Joerg, go! But, my advice is not to waste
> time and effort on an n-th UI framework.

I am working as an IT-consultant and most of my customers are concerned about their future invest in client development. Nobody currently dares to invest into JavaFX no matter if it is cool or not.
My project is not just yet another UI framework but a solution that lets you write a client once and then run it as HTML5 web client (using GWT), as Swing or maybe via JavaFX, Android, SWT. The more developers join in, the more native toolkits we can support. It is exactly the right moment in time to do so because a web client used to have a totally different architecture than a native client. But this has just changed.
I am convinced that this is what is actually needed. But I need additional developers and it is so hard to convince people to join these days...
I am working on a first showcase directly available on the project site to make it easier to get attention. If a real community would rise up, I am convinced we can make it up to a JSR for adding that as the universal Java UI API. At that moment in time we might also have a reasonable data+time API to integrate and also closures for reasonable coding of async callback functions.

So if you are a passionate Java developer please put yourself together and join me to make history

@Tonya: Thanks for solving the technical problems.

Cheers
Jörg

tonya_rae_moore
Offline
Administrator
Joined: 2011-05-20
Points: 0

Can you see it now?

GITNE
Offline
Joined: 2011-07-31
Points: 0

Yes. Thank you!