It differs in that it uses the same techniques as Google Inbox to run native code. We cross compile to Objective-C with j2objc, and cross-compile to JS via GWT, the data binding, controllers, are shared code on all platforms that run full speed native, while the UI templating language on each platform is platform native (e.g. angular directives directly in Android XML files)
It produces completely platform-impedance matched apps on each platform (e.g. native on mobile, JS on Web) while allowing the continued use of the regular UI design toolchains people are used to (Android Studio/Xcode Interface Builder)
> We cross compile to Objective-C with j2objc, and cross-compile to JS via GWT, the data binding, controllers, are shared code on all platforms that run full speed native, while the UI templating language on each platform is platform native (e.g. angular directives directly in Android XML files)
Honestly, this sounds like quite a technical achievement, but...
WHY? WHY? Why... are we still forced to go through these extraordinary lengths just to get pictures and interaction on a screen?
Long term, I want the Web to win. Eventually I think it will. In the 90s, no one ever thought apps like Gmail, Docs, or Maps could exist in the browser, and now no one questions that an Office suite can be done.
Eventually mobile performance, and API surface area will increase to the point where they're "good enough". Then they'll be an inflection point where people write Web apps for cross platform-ness for all but the most demanding stuff (like games or video editing)
After reading through your presentation, I have to say Singular does not look at all similar. And it's Java, so different audiences I guess. Angular in Java is not a bad idea though.
1) it uses templating (in our case, HTML, Android XML, and XIB)
2) it is cross platform, runs everywhere, even server
3) it produces native apps
It's different in this sense:
1) it doesn't do DOM diffing, it does two-way data-binding
2) it's statically compiled to native code, it doesn't try to run JS in native platforms, and doesn't require any async seems between between the native platform (it's all static linkage)
There may be other differences. The audience is Java and people who want no-compromise native integration. We target 70% code sharing between platforms, but expect the UI to be rebuilt for each platform.
The core engineers behind J2ObjC were those who built Swing at Sun. We're pretty sour on the idea that write-once run-anywhere UIs are possible. Best experience dictates custom design for each frontend IMHO, and shared UI widgets may get you into an 'uncanny valley' state where you're composing the native widgets in ways that are alien to platform specific style guidelines.
"We're pretty sour on the idea that write-once run-anywhere UIs are possible."
The guy in the video said a similar thing. It sounds like they want people to be able to use the same tools for each platform, not necessarily share all the code.
Oh, I missed that. I'm a big fan of React (working on DOM-diffing stuff myself for GWT), but I skimmed the video, didn't watch it through yet (rushing to airport)
The core engineers behind J2ObjC were those who built Swing at Sun. We're pretty sour on the idea that write-once run-anywhere UIs are possible
That's an odd conclusion. They're clearly possible, perhaps you mean they don't provide some notion of excellent UI. But even then, web apps are rather a big counter-example ... web apps have never looked native, never been consistent with each other, they don't even try, yet many of them are very popular.
The nativeness of UI is something that seems to matter to developers more than end users. Users react strongly to polish and strong design, but if that is totally inconsistent with the platform only a vocal minority seem to care.
I works if you don't try to emulate the native UIs certainly. I agree with that, but some projects have design requirements to use say, native style guidelines.
The point about Swing is that, it's good, so long as we're talking about custom LAF, not the Windows/Motif/OSX PLAF, which look/act sort of like the OS UX, but not quite.
It differs in that it uses the same techniques as Google Inbox to run native code. We cross compile to Objective-C with j2objc, and cross-compile to JS via GWT, the data binding, controllers, are shared code on all platforms that run full speed native, while the UI templating language on each platform is platform native (e.g. angular directives directly in Android XML files)
It produces completely platform-impedance matched apps on each platform (e.g. native on mobile, JS on Web) while allowing the continued use of the regular UI design toolchains people are used to (Android Studio/Xcode Interface Builder)