Multi-Platform App Created Using Single Code Base 296
andylim writes in with news of a reasonably impressive demonstration of the multi-platform capabilities of Adobe AIR. "Christian Cantrell, a technical product manager at Adobe, has created an app for multiple platforms including OS X, Windows 7, Ubuntu, Android, iPhone OS, and iPad OS. What's amazing is that all the platforms use the same code base. 'The application is called iReverse, and it's a fully functional Reversi game (complete with a pretty decent AI). Although iReverse is fun to play, the most amazing thing about the project is the fact that it runs in all these different environments completely unchanged. In other words, the exact same code base is used to build versions for five different environments. There's no other platform in the world that can boast this level of flexibility — not even close.'" Cantrell says he will open-source the code for iReverse and document how he pulled this off.
Probably 500 lines of actual game play code (Score:5, Funny)
combined with 350 million lines of #ifdef _LINUX_ or #ifdef _MACOS_ or #ifdef _UNICOS_.
Re: (Score:3, Interesting)
No, they said it's completely unchanged across platforms. Wanna guess how it looks on Windows?
In other words, the exact same code base is used to build versions for five different environments. There's no other platform in the world that can boast this level of flexibility -- not even close.
These guys obviously never heard of Unix before.
Re:Probably 500 lines of actual game play code (Score:4, Interesting)
Anyways, I fully suspect this guy's "solution" will be something like "We just used Flash and embedded it into these application 'runtime' thingablobs and then it was simply a matter of loading up the platform agnostic swf file." "Wait, what about the source code?" "Here's the source to the Reversi game. ahahaha did you seriously think we'd open source a runtime that'd put half of us out of a job???"
Re: (Score:3, Informative)
They also don't know anything about the history of computing. COBOL [wikipedia.org] was doing exactly that back at the end of 1960, which is one of the big reasons it became popular.
Re: (Score:2)
Sounds pretty close... in the last screenshot of the "article" you can clearly see that the project has separate directories for each platform.
Re: (Score:2)
That's probably just to accommodate the build settings for each platform. The code itself is likely shared between all builds.
Build settings (Score:2)
You mean where the symbols are defined that decide which platform-specific lines of the slushball will be executed at run time.
This is the worst case scenario for code coupling - a dozen projects spread throughout a common set of files.
Re: (Score:2)
No, I mean the part of the project that says "compile this for X platform" for a project where there's no platform-specific code at all as far as the programmer is concerned.
Re: (Score:2)
On my 64bit Linux TweetDeck doesn't even run properly. Black background and mostly nothing else. And I also noticed the resource hogging, but thought that was because mine was broken.
Re:Probably 500 lines of actual game play code (Score:4, Insightful)
Whether you hide behind a runtime is entirely irrelevant. Because the APIs differ between OSes, somewhere, someone had to write some nasty sticky portability shims.
Re: (Score:2)
> Whether you hide behind a runtime is entirely irrelevant.
It's not irrelevant if it saves you from having to include all those #IFDEFs in your own code vs. someone else's existing code.
Of course, you can do this with cross-platform libraries that are native, not interpreted. So why exactly do they persist in re-inventing this particular wheel? :-/
Re: (Score:3, Interesting)
You can indeed support platform-specific features in an abstracted UI. You just have to abstract the features, and demand that developers check for them, turn them on, and provide alternative behaviors when they are not available. I know, why bother, that's the same as #ifdeffing around with OS APIs... well, it can work out when a subset of OSes have the same features. The application only has to deal with the features it wants (and their absense) and not each OS which has that feature.
There are a lot of
Not even close? See: Java. (Score:5, Insightful)
Guy creates functionality I've been using in Java for 8 years; film at 11.
Re:Not even close? See: Java. (Score:5, Insightful)
Re: (Score:2, Funny)
...eventually Steve Job's will die.
deities don't die.
Re:Not even close? See: Java. (Score:4, Insightful)
This runs on the iPhone which Apple won't allow Java code to run on.
So Java is not flexible because Apple won't allow it on their platform? wtf?
some /.ers correctly classified this as slashvertisment
Re:Not even close? See: Java. (Score:5, Insightful)
This runs on the iPhone which Apple won't allow Java code to run on.
That's a technicality. The only thing holding Java back from running on the iPhone is Apple's corporate politics. Technologically, Java is capable. As such, I'd give the point to Java.
Qt is another multi-platform technology that predates (and, like Java, betters) what is being described in this article. Contrary to the article, Java and Qt are much better for cross-platform development, and predate this attempt by more than a decade. This article is way late to the party.
Re: (Score:2)
There are existing toolchains which allow you to write in Java and compile for iPhone and Android. I think they use source-to-source translation into Obj-C for the iPhone one, but on my reading of the claimed novelty ("the exact same code base is used to build versions for five different environments" doesn't preclude that code base going through a lot of preprocessing in some of the build paths) that would still qualify.
Re: (Score:2, Interesting)
Apple would like to see Java die and is doing it's best to kill it
All of their major online properties run on Java. iTMS, Apple store, Mobile Me ... Seems like odd behavior if the company wants to 'see Java die.' Besides, how else are they going to sell 11 million songs a day? Rails? PHP? .Net?
Re: (Score:2)
Re: (Score:2)
True, mod parent up
It must be a test to see the level of competence in the field :-)
Re: (Score:2)
Posted by kdawson
'Nuff said.
Re: (Score:2)
Flash and HTML5 make Java look efficient. (Score:3, Insightful)
When the industry as a whole moved from C and C++ to Java in the late 1990s, one of our main problems was the bloat that Java brought to the table. Memory consumption was a real issue, as was its slow nature. Things have improved somewhat, mainly driven by vast hardware advances. 15 years on, Java is finally usable.
Now, when we moved from C and C++ to Java, we did get a huge productivity boost, even if our apps themselves were more bloated and ran slower. Apps that would've taken us a year to develop using
Re:Flash and HTML5 make Java look efficient. (Score:5, Informative)
When the industry as a whole moved from C and C++ to Java in the late 1990s, one of our main problems was the bloat that Java brought to the table. Memory consumption was a real issue, as was its slow nature. Things have improved somewhat, mainly driven by vast hardware advances.
Interesting take - unfortunately incorrect. Java's performance issues were almost entirely due to the interpreted nature of its code. When it was originally released, all Java code was interpreted by the JVM. The result is similar to running code through an emulator ... often usable, but certainly not competitive with native applications. The introduction of Just-in-time compilation [wikipedia.org] to Java (via HotSpot [wikipedia.org] and similar runtime engines) made all the difference in the world. By Java 1.2 (1998), the JRE came equipped with HotSpot and basic performance became an (often inappropriately cited) non-issue. Hardware advances played as much a role in speeding up Java as it did any other language.
Now, when we moved from C and C++ to Java, we did get a huge productivity boost, even if our apps themselves were more bloated and ran slower. Apps that would've taken us a year to develop using C++ could be finished in a couple of months using Java. We could also develop much more complex software than we could using C++. So Java did offer some real benefits, and that's why it became popular.
More [drdobbs.com] info [scribblethink.org] can [zi.fi] be found [wikipedia.org] with Google [google.com].
Most of the benefits offered by Java are those bestowed upon an application by virtue of running in the Java Runtime Environment (JRE), including automatic memory management (garbage collection), strong exception handling, cross-platform portability, sandboxed code execution, security controls, dynamic class generation, to name a few. Java's syntax is also familiar and effective, and caters to many newer programming models and paradigms. Nothing about Java allows applications to be more complex than they were before... I dare you to find something as complex as the Linux Kernel [kernel.org], or something whose complexity is handled better in Java than via a C++ toolkit like QT [nokia.com]. Java's advantages have always been related to its abilities to simplify coding challenges, allowing more effective, secure, and functional code to be produced faster (and with a lower learning curve).
We can't say the same for Flash and HTML5, however. They both suffer from far worse bloat than Java ever did. For instance, take watching videos on YouTube. I just did that using Firefox on Linux, and the Firefox process is now using 3966 MB of RAM. That's its resident usage, not virtual usage, as well. Its virtual usage is currently 4512 MB.
This is certainly a bit subjective. For example, my Firefox running on Linux watching YouTube is only using 80MB of memory, with Flash's "npviewer.bin" adding another 10MB. However, RAM usage is not a bad thing. Traditionally, when RAM came in far smaller quantities than it did now, developers frequently traded extra CPU cycles and disk I/O to conserve memory. Now, it's almost the opposite. A good application, especially a foreground application like a web browser, will use RAM liberally to conserve bottleneck resources like CPU, bandwidth, and I/O. Most of the time, the application profiles the environment that it is running in and chooses how much RAM it will use for optimization based on that profile. A system with 1GB of RAM will likely have big applications like Firefox use significantly less memory than one with 8
Re: (Score:2)
You realize that blowing the physical RAM limit on a desktop will trigger swapping and
Re: (Score:3, Informative)
The GP didn't defend wasting memory, he said that on devices that do have ample memory, it's only smart to use it. Hard to find a fault with that.
For instance the String class represents all strings using UCS2 internally - if that isn't bloat I don't know what is!
Seems a fairly widespread practice: "UTF-16 is the native internal representation of text in the Microsoft Windows 2000/XP/2003/Vista/CE; Qualcomm BREW operating systems; the Java and .NET bytecode environments; Mac OS X's Cocoa and Core Foundation frameworks; and the Qt cross-platform graphical widget toolkit." (Wikipedia with citation needed, so beware.) I guess
Re: (Score:3, Insightful)
Left the whole industry with a sour taste in it's mouth. Could be why I've heard HTML5 is dropping applet support.
Re: (Score:2)
Swing usually doesn't look native to the platform, but Flash/HTML GUIs sure don't either. That said, since it's running in a browser, it's somehow a bit less jarring.
Re: (Score:2)
Re: (Score:2)
Off the top of my head... Java, Python, C using GLUT-OpenGL-OpenAL, C++ using Qt... There are tons of platforms that I've personally worked with where I had no problem supporting multiple platforms with GUI and audio while being able to maintain a single code base. Does this make me some sort of portability super-developer? Should I be doing speaking tours to brag about my amazing accomplishments?
No, I'm just some dumb fuck medioc
Re: (Score:2)
Ahh, but this is compile-once, right!? That makes it so much better! ...but Java already had this. Sure, you have to detect the platform and adjust accordingly - but it's been happening for a huge part of Java's existence.
In all honesty, you pulling it off in C/C++ makes you a "good" programmer, because your code doesn't actively make the codebase harder to maintain or port. If your code retains the possibility of targeting different architectures and devices, you're doing it right - at least for games.
Re: (Score:2)
C++/
Re: (Score:2)
More like HTML5 & javascript. Recently we've been using that coupled with jQtouch and PhoneGap to create web apps that work across iPhone, Droid, Blackberry, and Webkit browsers (Safari, Chrome, and Konqueror).
Re: (Score:2)
With adobe its not about its language but its tools.
How long would it have taken you to write and polish the same app in Java? I bet with Adobe flex and flash you could it in about half the time and it will look all nice and pretty. Since Oracle owns it I doubt they will do anything about this as they only care about boring server ERP apps and stuff like that.
)avascript (Score:2)
How about plain old javascript? I heard it's pretty cross platform as well.
I don't get it... (Score:2)
If you have the right compiler (like gcc ported to every platform imaginable) and created something that would output plain text in c or c++, wouldn't the code be the same? I thought code base was dependent on the compiler and the more complex it got (in terms of graphics, guis, hardware calls, etc) the more likely it was that you began to hit platform differentiation.
Also, not sure what your definition of app, game and all that is, but zork running on the zmachines (may disqualify thi
Re: (Score:2)
I had the impression that ActionScript uses JIT compiling lately. Furthermore, for iPhone, didn't they have to make it precompile things to avoid Apple restrictions on interpreters?
Same codebase... (Score:5, Informative)
That's doesn't seem all that impressive...
Re: (Score:2)
I believe whats happening is the Actionscript stuff is being compiled into various platform specific representations (like TFA states). Which is why you don't see source for each implemention in that Eclipse screenshot, only in the Flex project.
Adobe? (Score:2)
Um, if its one of their toolkits ill pass. They don't have a great track record of secure or efficient code.
Besides, hasn't he ever heard of python or java ( or a host of other languages with a common runtime )
Marketing (Score:4, Insightful)
It's not "one codebase for 5 environments", it's "one codebase for the AIR app, and multiple codebases for AIR itself that had to be ported to 5 different environments." There's nothing even remotely special about that, just empty hype.
Re: (Score:2, Insightful)
The point is that it isn't unique or special, it's just another VM architecture, just like Java, .NET, etc.
Only half the battle... (Score:3, Interesting)
While interesting it has been done before and to be honest these "portable platforms" all suffer from the same flaw: the applications they produce aren't native to ANY platform. What I mean is that while they run fine in terms of functionality they all look ugly compared to the environment and don't support typical OS features like hotkeys.
Look at GTK+. The applications work fine on Windows and OS X but you can tell within a second that they aren't native applications, they're badly ported Linux applications.
Re: (Score:2)
applications they produce aren't native to ANY platform.
The applications aren't for people that agonize over the appearance and behavior of their desktop window manager and widget toolkit; people like you. The target audience understands two interfaces; touch screen smart phone and web browser. If you confine yourself to that regime and author apps using cross platform tools you get access to the largest possible audience; everybody. Everybody doesn't care if it looks like OS-X or Win7 or Gnome or something else. They just don't care. Read that last senten
Re: (Score:2)
the applications they produce aren't native to ANY platform.
Yep, this would be a terrible way of making utility apps, but this is acceptable for some types of apps, like games, that usually have unique interfaces anyway.
Best of all for applications that are intended to "take over" the interface. An example that comes to mind is Boxee: when running, it's not supposed to mesh well with your system's interface, it's supposed to *be* your system's interface.
All the same, I am in total agreement with the criticism of cross-platform software that fail to integrate as native applications. I also don't want to see more web technologies being used "beyond their scope" outside the web, or dragging functionality into the browser that
iReverse (Score:4, Funny)
Wonder how long it will take Apple to sue because he dared use i as the first letter of his program name...
Re: (Score:2)
Re: (Score:2)
Apple doesn't actually own trademarks on i[Everything], and they don't have a right to i[Everything]. Whatever they use first is theirs, but nothing more than that.
Hell, there's a VOIP software company called iCall. [icall.com] That's a name I'm sure they'd love to have snatched up.
No other Platform? (Score:2)
What about HTML5? Of course, then you're more forced to be open-sourced, but still -- it achieves the multi-platform goal very easily.
Layout stuff more significant than cross platform? (Score:2)
Part of the cleverness here seems to be that the app is (somehow) doing dynamic changes of layout, not just scaling or flowing widgets into a given area, so that you end up with a GUI that looks reasonably sane on different screen sizes, aspect ratios and orientations. That's quite a nifty trick although I don't see any reason why it shouldn't be available in other cross-platform development environments - maybe it already is. Still, I had heard that Flash is good for UI stuff even though we all hate havi
Re:Layout stuff more significant than cross platfo (Score:2)
There is nothing innovative in dynamic layouts. They have been available in UI frameworks and widely used for years on Windows, and for decades on Unix.
Re: (Score:2)
How flexible is it in other environments, though? The AIR app pictured is reconfiguring the UI in various ways depending on orientation, moving UI elements from a side-by-side configuration to a vertical configuration depending on orientation, etc. Whether that's clever or not probably depends on how much work the developer had to put in - if differently structured interfaces were coded up manually then that's not so impressive.
If the runtime can reconfigure a set of declared elements in sensible ways, th
Re: (Score:2)
How flexible is it in other environments, though? The AIR app pictured is reconfiguring the UI in various ways depending on orientation, moving UI elements from a side-by-side configuration to a vertical configuration depending on orientation, etc. Whether that's clever or not probably depends on how much work the developer had to put in - if differently structured interfaces were coded up manually then that's not so impressive.
If the runtime can reconfigure a set of declared elements in sensible ways, that would be quite cool. Although the app demonstrated is relatively uncomplicated in terms of UI, it'd be interesting to see how this applied to a more complicated example. I did get the impression, from the video, that it was the ability to run flexibly on different screen configurations that they were trying to promote, not so much the fact that the code could run on different devices.
I think the video mentioned open sourcing the code in the future, at which point we'll all be able to see exactly how convenient to program they have managed to make this...
It reminds me of making a web site. You can detect the screen size and rendering engine, and move your html elements around whatever is best. I'd never call this multi-platform, though, even if the web site is as fully functional on the iPhone as it is under Windows 7, etc. The web site is written for the "browser platform", and relies on having browser implementations known to support it's functionality in order for it to work on any OS. There's nothing at all clever about it, in those terms. A single-wind
It's called Java (J2ME)! Look it up! (Score:2)
Seriously. Been there, done that.* Years ago.
All phones. Plus PCs (Linux,BSD,Mac,Windows,etc). Plus many PDAs. Plus settop devices. Plus a microwave. Plus some cars.
Without a single change in the code base. And for most of them not even a recompilation.
Java works as advertised... if you do it properly.
(Yes, of course compatibility goes out the window, as soon as you start depending on proprietary libraries which are only available for some phones. But if you want it to run everywhere: Don’t do that!!
Re: (Score:2)
Funny. You call someone totalitarian because they choose to do something different than all the other phone makers. I would think requiring everyone to support Java would be totalitarian.
Maybe you don't really use the word properly. Maybe what you mean is, independent and competitive. Is that bad too?
For years Sun did nothing to get Java to work well on the Mac. Do you wonder that Apple doesn't really feel like relying on either them or Adobe to provide a user experience for their phones or tablets?
Re: (Score:2)
Maybe you don't really use the word properly. Maybe what you mean is, independent and competitive. Is that bad too?
No no - their stance on Java is really messed up.
They've made promises, but never get around to porting/updating/creating up to date JRE's.
Older versions of OSX that were promised Java 1.6 are still on Java 1.5 or earlier.
For years Sun did nothing to get Java to work well on the Mac.
Back in the PPC days? Sun wanted to port it as soon as x86 was an option. They ported it to Linux - an arguably smaller marketshare - and they did a good job. If Apple had let them, we'd have a better Java situation on OSX than we do today.
I love coding in Java - it's fast enough that I us
Re: (Score:2)
Android doesn't do J2ME, either. Nor do most WinMo phones.
Yes, it can be added as an app - but you cannot rely on users having it installed.
Re: (Score:2)
For years I've heard this from the Java camp.
I remember back in the late 90s when Lotus put together that Java-based office suite that was supposed to change the desktop. Write once run everywhere was promised, OS/2 users would be saved and there was even talk of Microsoft's stranglehold on the office suite would be broken. What we got instead was an office suite that took near 5 minutes to open a document with no OS hotkeys, no OS interaction with other apps and an overall terrible interface.
Since those
Two points (Score:5, Interesting)
First of all, Air is broken for GUI apps (on Windows and OS X at least.) It gets many, many basic details of how widgets are supposed to work completely wrong. And, shock and amazement, most of the wrongness is the exact same wrongness that Flash widgets have-- gee! You'd almost think it's just a crummy Flash runtime!
Secondly, RealBasic can target three platforms from a single codebase (Mac, Linux, Windows) and gets two of them completely right. (Linux may be right, but I don't know enough about it to really verify it.) So this is nothing new-- that capability has been in RealBasic for at least 4 years now.
I love these breathless excited summaries. The only real point to take from this is Christian Cantrell is completely ignorant of Flash's competitors in this space. (And kdawson loves hype, the hype-ier the better.)
Re: (Score:2)
I was rather wondering why RB wasn't listed in the tags below the story. Sort of a "hey guy I think you forgot something?" moment.
That being said, I was big into RB in version 1-4 (I worked with Andrew on debugging) but back then the windows support was shakey. A lot of features didn't work, many didn't work the same, and you had to do a lot of #IF's with separate code in places for mac and windows. Linux support wasn't there at all really.
Looking at 08-09 recently, the windows support is surprisingly go
Bollocks (Score:3, Informative)
There's no other platform in the world that can boast this level of flexibility -- not even close
Qt will let you run a single code base on OS/X, Windows 7/etc, Linux and any platform that Qt/Embedded has been ported to. Not just trivial apps like Reversi, but also ones using multithreading, networking, etc. There's also a fair degree of cross-platform multimedia support too, although that's a work in progress. Personally I choose to use PortAudio for cross-platform audio aupport together with Qt.
Re: (Score:2)
There's no other platform in the world that can boast this level of flexibility -- not even close
Qt will let you run a single code base on OS/X, Windows 7/etc, Linux and any platform that Qt/Embedded has been ported to. Not just trivial apps like Reversi, but also ones using multithreading, networking, etc. There's also a fair degree of cross-platform multimedia support too, although that's a work in progress. Personally I choose to use PortAudio for cross-platform audio aupport together with Qt.
Are you talking specifically about this [nokia.com], or is that just Nokia's implementation of it?
Re: (Score:2)
Qt was originally owned by a (Norwegian? IIRC) firm called trolltech, that had it dual licensed - proprietary & LGPL, If I'm not mistaken.
A couple years back, Nokia bought it out, and recently GPL'd it. (but a prop. lic. is still available for outfits that don't want to meet (L)GPL restrictions, and want to pay instead - support is available for prop. licensed versions too, iirc).
I haven't played with Qt too much, but I made a couple simple apps that worked great on win32 and linux, no headache. Didn't
Re: (Score:2)
Ahh bugger. Trolltech had it under commercial & GPL. Nokia added an LGPL option. /need coffee.
Not even close? Ha! (Score:2)
Unity3D can produce binaries Windows, MacOS X, iPhone, iPod Touch, iPad and Wii. Upcoming version will also support Xbox 360, Playstation 3 and Android.
Re: (Score:2)
Re: (Score:2)
You need to be a licensed developer. The point is that the same exact code and project layout may be used to produce binaries for all those platforms.
Re: (Score:2)
Re: (Score:2)
If the game will only work well as a console title then don't develop it until after you've become a licensed console developer. Otherwise just make it a PC and Mac game and make a build for consoles if and when you become a licensed developer.
Paying one's dues (Score:2)
Re: (Score:2)
Anybody who wants to make games for closed platforms will have to meet whatever requirements the platform owner chooses to impose. That means you won't be able to take advantage of a multi-platform tool's ability to target those particular platforms unless and until you become a licensed developer, but the point of such a tool is not to solve your licensing problems but rather to make development easier by allowing you to produce binaries for multiple platforms without changing the code.
Great news (Score:2)
if it can work outside of a web browser. If not then I ought to stick with C++, Python, Java, and others as I want to make open source cross platform stand alone applications. Some people don't want to run their business code in a web browser for privacy reasons.
Same code base for multiple platforms eh? (Score:2)
If it's something compiled to native rather than to bytecode, it's still pretty mich the same story. My C++ open source app runs on Mac PPC, Mac Intel, Windows and Linux. I suppose I could consider that 4 platforms. They all share the same source code, but once compiled they are different binaries. Yes, there is some use of #ifdef in there. Thing is,
Re: (Score:2)
Looks like the guy is running Eclipse. Is his app written in Java?
http://en.wikipedia.org/wiki/Adobe_Flex_Builder
Adobe Flex/Flash Builder is an Eclipsed based IDE for developing Flex/Flash applications. Yes, Adobe is using Eclipse for this. The compiler is written in Java. Try to keep up please.
Hello world (Score:2)
"Hello world" works on pretty much every platform too.
C anyone? (Score:2)
Sure, the code base is infested with cpp macros and complex configuration mechanisms, making it something for the advanced programmer to grasp but this surely isn't something new. Also, not all libraries may be available on each platform. But I take most projects on a budget which are led by intelligent people, where human resource usage must be optimised will us
Re: (Score:2)
So what do you do if you want to make a call to the system API? Or if you want to use something like OpenGL/OpenCL?
That's easy ... you rewrite it as a real application.
Re: (Score:2)
Did you stop reading after the first line? That's exactly what I was suggesting.
Your post was very clear ... I was simply being sarcastic.
Re:all those platforms are yours... (Score:5, Insightful)
The current Java runtime makes Flash/AIR/.NET/Whatever look like a retarded snail trying to climb a salt hill. It's much faster than the competition, it even competes with statically compiled native code in terms of execution times. You rarely even use Java's interepter, the runtime compiles bytecode on the fly to native code and executes that.
Swing has traditionally sucked, which is why SWT was created.
Now tools for things like this are where Flash beats Java. Java really only has tools for programmers, not psuedo-programmer artist types who typically create cool things in Flash. Sun seems to have never gotten this aspect.
Re: (Score:2)
Best. Comment. Ever. :)
Re:all those platforms are yours... (Score:5, Funny)
Best. Comment. Ever. :)
Fixed that for you.
Re: (Score:3, Insightful)
Off topic, but I couldn't help but read your sig. Apparently you and/or the person that wrote that list never spent more than 2 minutes in .NET because the majority of the reasons given are just plain false, and another large portion are poorly hidden marketing gimmicks.
Re: (Score:2)
Re: (Score:2)
Yes it's current and the items are still completely valid.
Re:all those platforms are yours... (Score:4, Informative)
#7 is false.
#8 is another unproven assertion.
#11 is another unproven assertion.
#14 is false.
#16 is complete garbage. Collections and true generics are superior in
#17 is unproven assertion.
#20 neglects
#21 unproven assertion.
#22 is crap. O/R mappers are huge in
#23 is an unproven assertion. And you're going against one of the best IDE's ever that many love in this one.
OK, I got bored and stopped. And most of the other ones on the list I think are crap to. You're talking about programming languages, why even tout such a superficial list that amounts of nothing but sticking out your tongue and going "na-na na-na"?
Re:all those platforms are yours... (Score:4, Insightful)
I wish Java won (Score:3)
But not in its current form.
Sun never made native executables or a way to point and click on a java file and have it run without having to type java x. As a result desktop apps tended to ignore java. Sun gave away the JDK but had no tools for animation like Adobe. As a result JavaFX was too little too late. Netbeans is nice but I need to drag and drop to create animations and visual effects ... not type lines of code in with an ide.
Flash loads instantaneously while java applets have to launch a whole java r
Re: (Score:2)
Sun never made native executables
This goes against the very idea of Java: write once, run everywhere. And there is at least one compiler to native code: gcj [gnu.org]
way to point and click on a java file and have it run without having to type java x
If vact, there is: executable JAR. [wikipedia.org]. There's also Java Web Start, that allows running a Java window application in a single click from a webpage, using the sandbox security. For this two options, you need the Java runtime installed
As a result JavaFX was too little too late.
Sun didn't care for desktop Java for a long time, unfortunately.
Re: (Score:2)
Java on the desktop is really fast now. I can generate a JAR file and my application launches from that when I double-click it in about two seconds. Java applets do take some time to launch, though.
Anyway, for web graphics it seems like IDE plugins using Javascript/ECMAscript, HTML5, and WebGL will eventually make Flash obsolete, but it's still a bit early for that.
Re: (Score:3, Interesting)
Java does bad on GUI's. It's true. OTOH, it doesn't actually do that badly on gra
Re:all those platforms are yours... (Score:5, Insightful)
Java does bad on GUI's. It's true. OTOH, it doesn't actually do that badly on graphics. It has OpenGL bindings, so for things like making games, it actually does just fine. I'm not personally a big fan of Java, but normal "businessy" GUI apps are really the only are where Java really falls down on performance. And, even then, it's nowhere near as bad as the Java reputation would suggest.
It's worth pointing out somewhere that the iReversi program in the article doesn't actually seem to touch the GUI at all. I see no menus, search boxes, scrollbars, etc, just whatever window decoration the OS has to offer. The game itself is only graphics, which you point out can make things a lot easier. Basically, this game seems at least on par with the least impressive demonstration of cross-platform code I can imagine. It might as well just be "Hello, World!". How about an office suite like OO.o, an image editor like GIMP, a chat client like Pidgin, or anything that requires actual use of a GUI that so complicates the cross-platform approach?
Don't show me something simple and tell me it's a demonstration of overcoming a complex and longstanding issue. I can write a web page that renders the same in Firefox 3.6 as it does in IE 5, but that doesn't mean I've created anything special; I just wrote something basic enough that avoids the big issues.
Re:all those platforms are yours... (Score:4, Interesting)
There are no GUI widgets in Flash / AS3. Everything is actually drawn on screen using vector or bitmap graphics. There are components that you can use that emulate widgets (drop downs, date pickers, etc) but those are not native. This means that they will work consistently across all platforms.
This demo is perfect because it shows a Flash / AS3 developer what they need to do to make sure their app works well across devices.
1. Figure out how your app elements might reposition themselves depending on screen dimensions.
2. Figure out how to scale your application and elements so things are usable.
3. Use interactions that work on press and not on MouseOver.
The rest doesn't matter. As long as the framework can draw graphics to the system consistently across devices, nothing else really matters. Flash is become the ultimate platform for GUI development.
Re: (Score:2)
Java does bad on GUI's.
why don't you take a look at SWT first?
Re: (Score:2)
Re: (Score:2)
I know where you are coming from, Voulnet... I am irritated also. Won't stop you from being down-modded, though :( Can't wait to see the next multi-platform announcement about how some new program runs only one of Mandriva, Fedora, SuSe, or Ubuntu, instead of just saying "Linux".
Regardless, cross-platform development is always a good thing (as long as it is at least the current "biggest three"- MS-Windows, MacOS, and Linux).
Re: (Score:2)
Re: (Score:2)
I can't bring myself to adequately ridicule your "newbie sheep masses" comment. It's puerile enough that it ridicules itself, I suppose.
Re: (Score:2)
In the video, the developer is demonstrating using Ubuntu and I think he mentions it specifically. Maybe that's where the choice of wording came from.
Re: (Score:2)
why can't you just use cpp? It will work on all linuxes without much modification. And who gives a fuck about windows.
The approx 90% of computers that run Windows would care. Catering to an OS with only 1% of the market share like Linux is suicide. http://marketshare.hitslink.com/operating-system-market-share.aspx?qprid=8 [hitslink.com] http://www.statowl.com/operating_system_market_share_trend.php [statowl.com]