Actually it's true
Unlike with iOS/Android/Blackberry/WPx Java ME actually works and even has a moderately sane software distribution model. You just plop the file onto your device and you are done.
Haven’t you noticed? Java, the red-headed stepchild of the phone world, has conquered the world by default. The platform written off just a few years ago as bloated, cumbersome and inefficient is now inescapable. It’s actually down to desperation by the two fallen stars of the handset world, Nokia and RIM. Android, another …
Nice downvotes for a valuable comments.
A java app has a single file copied to the phone handset, which can then be opened from the phone menu and just 'runs'. In many cases there are no other files used, unless it's a game or application that requires saved information; even then, there are now ways to save within the one file.
Android et al require directory structures and also require the file copied to actually be installed - the file is just an installation file.
For developing countries the above is a big bonus, not everybody has a PC in Africa, China and parts of Russia. Those people often require technology we used 10 years ago in mobile phones.
And that's different from an Android APK file how? (hint, APK files are renamed ZIP files just like Java JAR files)
Neither Android or iOS require the user to have a PC. You can pick an app from the store and have it download and installed directly. Java makes life harder in this case.
All the J2ME implementations I have worked with had severe quality issues. Nokia's were the best, but even they had things like "cannot use a UDP socket to send and receive; must use two different sockets". Not obeying these rules would lock up the whole phone. Other vendor's J2ME runtimes were even more broken.
So Nokia and all the other "old" phone vendors just had 0% software competence. Their goal was to sell units, generate cashflow and then forget the phone and its software.
That is why Google and Apple eliminated them in a few years - they knew how to maintain software in the field.
And in addition Dalvik actually allows a developer to write the app they want instead of having to use the complete joke gimp that is Java ME. The article doesn't address just how much different things would be today if Sun/Oracle's retarded artificial market segmentation hadn't insisted on the Java SE not being allowed on smart phones. The platform would really have been ubiquitous then.
Actually what you're describing is only partly true.
Yes; you could easily create a midlet buy merely compiling your ME project in, say, NetBeans (personal favourite of mine). But with all the phones I worked with you could /not/ simply distribute it onto the phone like you could, for example, a war file onto a J2EE (Glassfish) server. Even if your phone would be recognized as USB storage.
Instead you had to make it available online, use the phone's browser to get to the program location (which always took /2/ files; one description explaining the whole online setup (you always needed to set this up /manually/) and the actual midlet itself) and only then would the midlet actually install.
I can't comment on Android because I don't use it, but its by /far/ as easy as some other development systems do this.
I have a Galaxy Note N7000, and in standby, running GrooveIP and K9 push-mail, it draws about half a percent per hour on WiFi and 2% per hour on 3G (depending on celltower proximity). When running apps, 90% of the battery drain is the screen, which has nothing to do with Java.
I don't agree that Java is battery-hungry. Sloppy coding is battery-hungry.
Oh, I do have Samsung Media Hub, and all the other nice Samsung bloatware, disabled (frozen with Titanium Backup). Still using Gingerbread -- at least until they can make ICS drain less than 1% per hour (LOL)
and I still get 3 days of mail & web with this E71 and its 5 year-old battery. No cool, no touch screen but a fine keyboard and fits well in my jeans.
But it does lack USB charging - arguably THE killer app for modern smartphones since it makes charging somewhat incidental to syncing and it's easier to carry a cable than a wallwart.
Obj-C is indeed a fast compiled language. It does have a runtime component that handles the messaging and reflection aspects, but Objective-C is also a pure superset of C, so you can write C code too. It's "C with OOP" done right. (Yes, C++, I'm looking at you.)
Java? Meh. I've had reason to use it in the past and it's everything that's wrong with BDP*: you're endlessly subclassing and subclassing just to get even the most trivial of things to happen. Look at how much easier it is with Objective-C (and Cocoa) and you'll soon be wondering precisely which fresh circle of hell Java and C++'s designers will be given when their time comes.
The main reason I stay away from Android is because its development tools are so poor and the ROI is terrible. Eclipse is no substitute for a proper IDE that doesn't suck.
* ("Buzzword-Driven Programming".)
Early Java programmers were kind of over-excited with this inheritance thing, and tended to overuse it, as evidenced in many books and frameworks from the time. Today the Java community favors composition and interfaces (which enable much more flexible architectures) over class inheritance – but I guess that for those who haven't kept up, the damage is already done.
I agree that Enterprise Java is hopelessly cluttered with buzzwords and decrepit FUBAR frameworks (hello TIBCO), but I have always found the Java language and its base API very straightforward. In terms of ease of use it runs rings around C++; performance might not be as good, but as in the case of scripting languages, it's often good enough that having something that works now trumps having something perfect later.
@xperroni: Too right. I still endure the flashbacks to a time I once looked at a team-mates project code that sported factory-fascade-subclassed-abstract (not an exact structure you understand) nonsense. I point out it wasn't very readable and made debugging problems a pain in the arse with its interwoven "where's it implemented" bs. He retorted that this was "enterprise level strategic coding" and I should get back to my simplistic tactical World.
I've never forgotten that spaghetti mess and will probably never return to Java as the damage has been done. I moved on to the (shock horror) other Java-like language and prefer it.
Not sure whether to up vote or down vote your post.
I'd up vote you for the remark on the horror that is C++, but down vote on the java critique. Loved java, hated C++, never found found sub classing a problem in my Java code, but have encountered C++ code with endless levels of subclasses.
C++ made me crazy and old before my time.
Has it been made ABSOLUTELY CLEAR to them that by 'fixing bugs', it is meant that the bugs should be corrected so that they do not occur, as opposed to improving the bugs so that they do more?
You mean them hacks could actually correct bugs if only management told them in clear terms that's what's wanted?
Either way it's hopeless.
Nokia + RIM < 20% of the smartphone market. How does that equate to Java winning the smartphone wars?
Android is only a Java-like platform (and has the results of a court case to prove it)
iOS is based on Objective C/C++
Combined they own the other 80% of the market and look like the winners to me.
Symbian and Symbian Lovers (which Andrew has always been a bit guilty of) considered the Series 60 platform to be a smart phone operating system. Nokia made it possible for every grandmother on the planet to get a Series 60 telephone with a large keypad for free with a cheap 12 month contract (or is it cataract hehe) and therefore, if you consider that installing Series 60 onto a telephone which eventually ends up with a consumer in the end a smart phone, then Nokia probably has 3/4 of a billion units out there. Those phones however were generally preferred over the Series 40 for grannies because they had a screen which made dialing all 3 people they called by mobile phone easier. I personally have 4 or 5 Series 60 phones I used for trying to test application development on... got them for like 10 euro unlocked from junk bins weeks after they were released.
I have seen a handful of people with Nokia "Smart Phones" being carried by the same cheeky looking people who do things like wear a noose to work because it's the only way they can show they're important. The same types of people who carry blackberrys in the states.
Just remember, Nokia isn't the "Granny Phone Company" for no reason.
P.S. - If Nokia wants to start trying to be a lot less lame, they should dump their entire "Big Button Phone" portfolio which pays their bills and get rid of the lame assed fat guy who thinks he's cool on stage when it comes to presenting the phones. The fact that he says it's cool and hip and such is enough reason to call them lame.
...because Java is the one language I've programmed in that I hated every minute of.
What a relief Android (maybe others, I haven't looked yet) can have pretty rich HTML5 apps with the SQLite database engine to provide storage. A whole app with only a dozen lines of Java.
Now if they'd only put Perl on them all...
The main reason that J2ME failed to gain traction in the early noughties was due to platform fragmentation. An app that would run fine on one device would lock up on another, and every handset manufacturer would have a different API for audio functions. The bulk of work would be porting code between phones.
On top of that the operators would only allow sales through their individual stores, and would take the bulk of the revenue for the privilege. Then there was a (now-defunct) games publisher notorious for not paying its third party developers. The economics didn't add up.
What's changed things is Apple's app store, which has allowed an ecosystem to build up around the iPhone. This has been largely copied by other platforms, some of whom use Java based platforms.
every Java app I've downloaded for ages (computer based, server based, phone based...) is generally released with a different version for each platform. It's crazy how the write once run anywhere turned quickly into write once, run anywhere so long as it has this OS, this browser version, this Java version etc...
Funny how people only look at the US market, when making broad statements.
RIM is doing pretty well in the 'developing markets' (or whatever negative euphemisms analysts use nowadays) such as Asia, Africa.
Lower-spec phones with a good OS are still good phones for what they need to do in those areas.
Not everywhere is the phone system as 'advanced' as in the US / Europe. And not everywhere in the US / Europe is the phone system as 'advanced' as in other parts of that same area.
The fact remains that a large number of phones use one form or another of Java.
To hell with 'the market'. I care about battery life. That's why I replaced the original battery on my Desire with a 3aH monster. Okay so it doubles depth of the phone but since it's stepped in a bit I find it actually makes it easier to hold. It also means that the phone props itself up when sat on a desk sideways which is nearly perfect for watching videos.
As for batter life: Damn near a week between charges for me. Admittedly I don't make or receive many phone calls nor browse the web. However I do use it for an hour every day to play music and when I drove to North Wales a couple of weeks ago it powered the GPS for the entire 3.5 hour journey. The battery indicator was red on arrival but it managed it.
Sadly it seems that newer phones are all one piece shells so the options for replacing the batter are limited. Guess I'll just have to stick with my Desire instead of giving more money to HTC. Ho hum.
I think someone might have forgotten that RIM pretty much started out with Java, almost from the beginning, rather than tagging it on later. After all, the RIM 957 (year 2000!) used JDE for app development. The first GPRS capable device RIM launched (BlackBerry 5810) was fully Java. That's hardly adding it on at a later date "to remain competitive"!
"the market doesn’t seem care about call quality or battery life"
I care very much about battery life, its just the phone producers seem to think we don't. I would much rather a thicker phone with a great battery than the thinest phone in the world (which is what the all try to do) and have to charge it multiple times a day. I used to have a P800, otherwise known as 'the brick'. It was a massive chunky device, but at least the battery was decent.
Nokia, a long-term supporter of Java ME, continues to have an interest, but has shifted its focus to Windows mobile. Likewise beleaguered BlackBerry manufacturer RIM, who is shifting away from Java ME to a new OS based on QNX with native C/C++ as the preferred development language.
iOS apps are mostly objective-c.
Android sort of means Java has a presence on smart phones, but it uses Google's own proprietary and incompatible version of Java which therefore isn't really Java at all.
"....uses Google's own proprietary and incompatible version of Java which therefore isn't really Java at all."
I was of the impression that the whole Oracle / Google shitfight was over the Java TCKs. You can't say it's "Java" without it getting the Test Compatibility Kit seal of approval and the TCKs are proprietary to Oracle, who reckon mobile devices should be restricted to the Mobile Edition and won't license 'em for testing on Android, so they're not allowed to run 'em........officially.
Nowhere have I seen it said that Android Java won't run the TCKs correctly, only that they're not allowed to stick the magic badge on it to say that it will.
What did I get wrong?
> What did I get wrong?
You confused Java the language with Java the VM.
Some parts of Android apps are typically programmed in the Java language, but Android handsets have no Java VM on them. They use the Dalvik VM, which is entirely different, being a register-based machine rather than the Java stack-based one. Think Z80 vs. 6502...
A quad core Android or (if you must) an iPhone for Facebork and videoing stuff, and a Nokia 8210 for (discretely) making calls on, preferably with a wired headset. (Y'know, in case anyone saw it and thought you were some sort of pauper or something.) Match book sized and 3 week battery life FTW.
I honestly don't get all the vitriol against current phone call quality. Most of the problems are due to the networks, not the phones themselves.
Actual call quality, in terms of sound, is no different here than it is in Viterbo or Rome. In Viterbo, I'm more likely to get a dropped call, but so is everybody else: the city is extremely hilly and there just aren't enough masts yet.
I live in a rural part of the Lazio region, between those two cities. The geography is similar to the Welsh Highlands, with added earthquakes. I get decent enough sound quality in a large town or city, but out in the small village where I live, the signal is dire. I don't even get an "E" symbol on my iPhone 4, let alone a "3G": it's just plain old Mk. 1 GSM.
But I had far worse problems with my Nokia 6310, which was literally the cheapest phone I could find with Bluetooth support. Nokia had a reputation for great call quality, but my iPhone 4 sounds a hell of a lot better than my old Nokia ever did. (And it's better at finding a signal too, which gives the lie to that "Antennagate" bollocks.) I've noticed any notable difference in sound and call quality with my brother's Samsung and his wife's LG. Both are pretty old "feature phones", bought around 2009.
It doesn't help that many landlines in Italy have been converted to Telecom Italia's awful VOIP system. Phoning a landline today often results in a nightmare of blips, clicks, dropouts, and weird Autotune-esque audio artefacts. Phoning a mobile usually sounds a lot better.
Battery life? Okay, I'll grant that I'd like my iPhone 4 to last more than a day, but 24 hours is a pretty good battery life for what is, after all, a computer more powerful than any of the desktop PCs you could buy just ten years ago.
Thanks for posting the picture of the Jasper. The caption is not quite right though - it did actually ship in Hong Kong, albiet in very low volumes. But it was too little, too late, the company failed a few weeks later. I still have a few "mint in package" Jasper's under my desk...
Java's GC will kill user experience due to unpredictable freezes of the UI, just when it is inconvenient to the user. In addition to that, neither SUN nor its licensees managed to release high-quality implementations of J2ME. It is much, much more broken than J2SE, and that is already a mess, quality-wise.
So the iphone going with a C variant was one of the smartest decisions. Sooner or later the Googlers will realize that too and rip Java out of Android.
Android has most of the smartphone market share, and app development on Android really only took off when they made it possible to run native code. If anything, the Android developers I talk to resent having to use Java to make their UIs.
iOS might as well have the rest of the smartphone market share and Objective-C is just C/C++ with some extra object goo.
So I'm unclear on how Java won anything...?
The Java language and the JVM are two different sides of one coin. The incredibly inflexible one-size-fits-all approach of Java more or less dictates the structure (as opposed to the implementation) of the JVM.
I can't have destructors (so all the places which leave a method have to clean up a resource allocated in that method), I can't have value arrays, I can't have non-primitive data on the stack (pointers to objects are also primitive), I cannot have reference.counted pointers, I cannot even be soft-realtime.
So there is the SUN JVM, there is Dalvik and there is gcj, but they all share serious deficiencies which are similar and which are rooted in the concepts Java is based on.
Why do I need to create GC load by handling pointers ? Strings will never be cycling data structures, but one-size-fits-all dictates that there cannot be reference counting for these. Even if it could be proven that only a single thread will ever access them.
Java is a FAIL as much as SUN is a FAIL.
Whatever happened to all those genius programmers who wrote fast, efficient and small programs for the Acorn RiscPC? I am so surprised that something based on RISC OS is not the definitive phone OS. Imagine being able to program your phone in BBC BASIC!! After all the original designers of the ARM chip also wrote the BBC OS and BBC BASIC. Ahh memories!
Biting the hand that feeds IT © 1998–2022