This is what happens when you let Java people write apps for your platform(apenwarr.ca)
apenwarr.ca
This is what happens when you let Java people write apps for your platform
http://apenwarr.ca/log/?m=201004#09
10 comments
"Languages just don't matter. They don't."
I find this discussion very intriguing in light of Apple's now-infamous ToS clause 3.3.1 (can only use C/C++/ObjC on the iPhone). So is okay that Apple's limiting the languages you can use, because they doesn't matter? Or is this still evil on Apple's part for trying to be restrictive?
I'm not trying to troll here; I'm honestly interested in people's opinions.
I find this discussion very intriguing in light of Apple's now-infamous ToS clause 3.3.1 (can only use C/C++/ObjC on the iPhone). So is okay that Apple's limiting the languages you can use, because they doesn't matter? Or is this still evil on Apple's part for trying to be restrictive?
I'm not trying to troll here; I'm honestly interested in people's opinions.
That clause is Apple's attempt to prevent a flood of low-quality ported apps. Therefore the argument would be that if languages don't matter, Apple's policy is misguided, and if languages do matter, Apple's policy actually makes sense. (Neither position has any connection with the evilness/goodness of said policy).
Personally I tend to believe that languages do matter, and therefore Apple's policy makes sense as a way to prevent crappy ported apps, but it's still evil. It's not impossible to produce a great ported app, just more difficult; plus, porting apps isn't the only reason why you might want to run non-Objective-C code.
Personally I tend to believe that languages do matter, and therefore Apple's policy makes sense as a way to prevent crappy ported apps, but it's still evil. It's not impossible to produce a great ported app, just more difficult; plus, porting apps isn't the only reason why you might want to run non-Objective-C code.
>porting apps isn't the only reason why you might want to run non-Objective-C code.
The Objective-C language being one very good reason for wanting to run non-Objective-C code.
Frankly, I'd much rather they adopted a direct appstore policy to reject apps that don't feel native or performant enough, rather than coming up with a second level of indirection that assumes all apps not written in their approved language of choice has those qualities.
The Objective-C language being one very good reason for wanting to run non-Objective-C code.
Frankly, I'd much rather they adopted a direct appstore policy to reject apps that don't feel native or performant enough, rather than coming up with a second level of indirection that assumes all apps not written in their approved language of choice has those qualities.
That's exactly the sort of ambiguity people have been complaining about with the app store since it started. Nobody wants to be left guessing about what they have to change to get an app approved.
Yes, I don't like that either. But its better than painting everyone with a broad stroke.
It's no different from saying 'the last 10 apps that were submitted from Podunk were all poor, so no developer from Podunk is allowed to write iPhone apps'
It's no different from saying 'the last 10 apps that were submitted from Podunk were all poor, so no developer from Podunk is allowed to write iPhone apps'
Languages are just tools, but the ones I've been using have had an impact on the evolution of my coding.
Java is really great for server apps, but I've yet to see a desktop app that is reasonably performant. Ok, Eclipse is not horrible, but it takes about 2 GB of RAM. I don't know what it is about the SDK or language, or people who write software for it, but it seems impossible to produce a reasonably performant java desktop app.
It hasn't been my experience, especially since the JVM's parameters need to be tweaked for it to accept that much memory ... the heap size is limited by default because the JVM doesn't release free memory to the operating system.
In practice the JVM does quite well on memory usage, its only flaw being that it doesn't release memory back. If your Eclipse instance ends up using 2 GB that's because it does lots of stuff and needs 2 GB of memory.
Either way, Eclipse is comparable in memory usage with Visual Studio, which has most of its components written in C++.
The only problem with using Java for desktop apps is with native integration with the OS ... Java GUI toolkits suck badly, except one which isn't really popular ... Qt Jambi.
But in the case of Android, this discussion is not really relevant ... they use their own VM that has different optimization goals (so any comparison to the JVM is apples vs oranges), and every component you use is native to Android.
In practice the JVM does quite well on memory usage, its only flaw being that it doesn't release memory back. If your Eclipse instance ends up using 2 GB that's because it does lots of stuff and needs 2 GB of memory.
Either way, Eclipse is comparable in memory usage with Visual Studio, which has most of its components written in C++.
The only problem with using Java for desktop apps is with native integration with the OS ... Java GUI toolkits suck badly, except one which isn't really popular ... Qt Jambi.
But in the case of Android, this discussion is not really relevant ... they use their own VM that has different optimization goals (so any comparison to the JVM is apples vs oranges), and every component you use is native to Android.
the JVM doesn't release free memory to the operating system.
Not true. The Sun/Oracle JVM at least most definitely releases free memory. It's just rather reluctant to do so - but that, too, can be tweaked via the -XX:MinHeapFreeRatio and -XX:MaxHeapFreeRatio parameters
Not true. The Sun/Oracle JVM at least most definitely releases free memory. It's just rather reluctant to do so - but that, too, can be tweaked via the -XX:MinHeapFreeRatio and -XX:MaxHeapFreeRatio parameters
We're talking apples vs oranges here.
I'm with you - Java doesn't excel particularly on conventional PC desktop apps. But that's a world away from mobile apps.
The vast majority of run-of-the-mill phones run Java J2ME apps very well.
For example:
http://www.jamster.com/fw/goto/games
The top games are pretty high quality. But the rant against Java fails to mention the billions of J2ME games downloaded... convenient.
I'm with you - Java doesn't excel particularly on conventional PC desktop apps. But that's a world away from mobile apps.
The vast majority of run-of-the-mill phones run Java J2ME apps very well.
For example:
http://www.jamster.com/fw/goto/games
The top games are pretty high quality. But the rant against Java fails to mention the billions of J2ME games downloaded... convenient.
It's quite possible to create responsive Java desktop apps. It's just that it takes an experienced Swing developer who has learned all the hard lessons about building that type of app.
That said, yes, many Java developers write bad code, but so do developers who write in other languages. Java just gets a higher profile because unfortunately the Java community has a tradition of writing libraries and APIs that sacrifice usability for flexibility (that's the kindest way I can put it, anyway).
Slightly off-topic: Am I the only one who feels that Eclipse is the IDE equivalent of a hair shirt? I find its UI sluggish, its insistence on imposing its ideas about project management on you irritating, and to be generally overcomplicated. To me, NetBeans, former versions of IntelliJ, and VS are much nicer products (mind you, half the time I still just use an text editor though).
That said, yes, many Java developers write bad code, but so do developers who write in other languages. Java just gets a higher profile because unfortunately the Java community has a tradition of writing libraries and APIs that sacrifice usability for flexibility (that's the kindest way I can put it, anyway).
Slightly off-topic: Am I the only one who feels that Eclipse is the IDE equivalent of a hair shirt? I find its UI sluggish, its insistence on imposing its ideas about project management on you irritating, and to be generally overcomplicated. To me, NetBeans, former versions of IntelliJ, and VS are much nicer products (mind you, half the time I still just use an text editor though).
Regarding IDEs, after using eclipse for years, I recently tried Netbeans and found its UI sluggish, its ideas about project management on you irritating, and its configurability sorely lacking...
In my experience when working with Java the old Borland JBuilder worked well and was reasonably responsive, Eclipse was a pig no matter how I tweaked it, Netbeans kept me happy.
IDEs are a special case, and not necessarily representative of the platform -- they're trading memory for speed on purpose. Cross-referencing and API lookups have to be fast, memory footprint is far less important.
Something like the Eclipse RCP mail app demo could provide a more representative baseline memory footprint of the platform (http://www.eclipse.org/articles/Article-RCP-3/tutorial3.html). The Eclipse platform can be quite compact without the IDE features, JDT & online help indexing, etc.
Something like the Eclipse RCP mail app demo could provide a more representative baseline memory footprint of the platform (http://www.eclipse.org/articles/Article-RCP-3/tutorial3.html). The Eclipse platform can be quite compact without the IDE features, JDT & online help indexing, etc.
Java performance just isn't straightforward. Startup time alone really taints the perception of an app before you get to working with it. Another sore spot is resource loading. Once the JVM is all warmed up it's generally humming along at a great pace, computationally speaking.
Check out Processing for a nimble Java app.
Check out Processing for a nimble Java app.
I'd like to know what you think about my desktop Java apps, fleitz. Do note that the apps are not fully functional, but that's my shortcomings, not Java's:
http://www.assembla.com/wiki/show/jtuils
http://www.assembla.com/wiki/show/jtuils
> Languages just don't matter. They don't.
Explain recursion in Applesoft (or any other 8-bit) BASIC.
The tools I have used have, yes, deeply impacted my professional development.
Had I not seen Smalltalk in mid 80's, I would have liked C++. Had I not seen Python and Zope, I would find Java and servlets and all the stuff built on them cool.
Edit: Had I not learned APL (and, to a lesser degree, Perl), I would not write program as well documented as I do now.
Explain recursion in Applesoft (or any other 8-bit) BASIC.
The tools I have used have, yes, deeply impacted my professional development.
Had I not seen Smalltalk in mid 80's, I would have liked C++. Had I not seen Python and Zope, I would find Java and servlets and all the stuff built on them cool.
Edit: Had I not learned APL (and, to a lesser degree, Perl), I would not write program as well documented as I do now.
Android is using Java the language, not the JVM and not libraries of code that were written for the JVM. The platform's API is also totally different than what you can find in Java SE.
And while I hate Java the language, only shortsighted developers blame the language for their lack of skill. You're not primarily an artist, you're an engineer so get over it ;)
Android's development model is also proprietary, so its quality has got nothing to do with open-source.
The title of this article is "open source is stupid". I beg to differ, this article is stupid.
And while I hate Java the language, only shortsighted developers blame the language for their lack of skill. You're not primarily an artist, you're an engineer so get over it ;)
Android's development model is also proprietary, so its quality has got nothing to do with open-source.
The title of this article is "open source is stupid". I beg to differ, this article is stupid.
Perhaps Java is a symptom rather than the root cause. Knowing Java is considered a "safe route" for the aspiring programmer.
Lots of programmers that shouldn't have compiler permits enter the market every year to participate in huge projects that happen to be written in Java because the C[ITEO]O decided it's "enterprisey" enough and the consultancy opted for it in the proposal because they could hire inexperienced Java folks cheaper than they could hire inexperienced Smalltalkers or Lispers and all the Perl, Ruby and Python folks refused to wear neck ties.
Lots of programmers that shouldn't have compiler permits enter the market every year to participate in huge projects that happen to be written in Java because the C[ITEO]O decided it's "enterprisey" enough and the consultancy opted for it in the proposal because they could hire inexperienced Java folks cheaper than they could hire inexperienced Smalltalkers or Lispers and all the Perl, Ruby and Python folks refused to wear neck ties.
In creative work, tools don't matter. In engineering, they do.
You can't build a F1 car or a space vehicle without amazing tools, but you can draw a striking picture or play beautiful music with the most humble of implements.
You can't build a F1 car or a space vehicle without amazing tools, but you can draw a striking picture or play beautiful music with the most humble of implements.
First of all "amazing" is subjective, and all current mainstream tools are amazing in some way.
Android has Dalvik, which is a register-based virtual machine (as compared to the stack-based JVM) that's optimized for solid-state memory (which has slower access times) and with bytecode optimized for interpreting on ARM processors. I's questionable if it was the right thing to do, but it's still amazing.
Having a VM on a mobile device is debatable, but it's higher level and that's one way to achieve portability and to reduce accidental errors (memory leaks, buffer overflows).
And what language would you propose they should use? Their own? C#? And keep in mind that it has to be a language that doesn't need lots of magic to make it run efficiently, like a tracing JIT (a pragmatic choice based on current real-world constraints).
Your analogy to cars doesn't hold water. You can't build an F1 without proper knowledge, and all the tools in the world won't help you with that.
Android has Dalvik, which is a register-based virtual machine (as compared to the stack-based JVM) that's optimized for solid-state memory (which has slower access times) and with bytecode optimized for interpreting on ARM processors. I's questionable if it was the right thing to do, but it's still amazing.
Having a VM on a mobile device is debatable, but it's higher level and that's one way to achieve portability and to reduce accidental errors (memory leaks, buffer overflows).
And what language would you propose they should use? Their own? C#? And keep in mind that it has to be a language that doesn't need lots of magic to make it run efficiently, like a tracing JIT (a pragmatic choice based on current real-world constraints).
Your analogy to cars doesn't hold water. You can't build an F1 without proper knowledge, and all the tools in the world won't help you with that.
[deleted]
What, the page doesn't load?
"This is what happens when you let Java people write apps for your platform" :)
This is what happens when you host a website on the end of a DSL line.
76-10-167-252.dsl.teksavvy.com
yep.
yep.
I passionately dislike Java as your average C programmer, but this post is pure trolling.
Apple was always about the design first and technology second. And Google always had these in reverse. So their platforms appeal to different types of developers and it is quite natural that Android apps are produced (in a Hollywood sense of the word) by the tech people and IPhone apps are produced by the designers. Hence the obvious appearance and visual polish difference between two.
Apple was always about the design first and technology second. And Google always had these in reverse. So their platforms appeal to different types of developers and it is quite natural that Android apps are produced (in a Hollywood sense of the word) by the tech people and IPhone apps are produced by the designers. Hence the obvious appearance and visual polish difference between two.
Site is down for me =/
http://www.downforeveryoneorjustme.com/http://apenwarr.ca/lo... says "It's not just you! http://apenwarr.ca looks down from here."
It got news.YC'ed? or HN'ed?
It got news.YC'ed? or HN'ed?
The downforeveryone guys should add a goog cache link. Search cache:http://apenwarr.ca/log/?m=201004#09
This is what happens when you don't let Java people write your blog software.
(since we're overgeneralizing)
(since we're overgeneralizing)
I couldn't agree more. Most of the people I know who write for android are constantly complaining about the iPhone licensing agreement, and then when I look at their apps, it looks like garbage. The problem is that with out a review process the whole platform looks like dreck and because of that no one will spend money on an android app. It's almost as bad as the apps I've seen on jailbroken phones, half of them replace the home screen and all of them look terrible.
I actually had an app rejected from the app store today for inappropriate use of the Detail Disclosure button. (I was using it as a login button)
Although I disagree and think its ok, I can understand how if people (like myself) just use buttons for whatever they want it can result in a very inconsistent user experience.
That said the login button is now a rounded rect.
I actually had an app rejected from the app store today for inappropriate use of the Detail Disclosure button. (I was using it as a login button)
Although I disagree and think its ok, I can understand how if people (like myself) just use buttons for whatever they want it can result in a very inconsistent user experience.
That said the login button is now a rounded rect.
It's basically the old Windows Mobile modders on a new platform: http://www.xda-developers.com/
The exodus has been happening since Android was released, but now that MS has finally come to their senses with WM7 (WM7:WM6::Zune:Janus) there's no future left in doing total UI conversions for manufacturers/carriers wanting artificial product differentiation.
The exodus has been happening since Android was released, but now that MS has finally come to their senses with WM7 (WM7:WM6::Zune:Janus) there's no future left in doing total UI conversions for manufacturers/carriers wanting artificial product differentiation.
[deleted]
Isn't this the troll we fed yesterday?
Oh boy... Did anyone read TFA? Is the TFA available somewhere else?
Haha, just because someone said he's a fanboy, he ignited a controversial debate on Android & iPhone. Yeah, that's what a fanboy usually be!
The article doesn't seem to mention the millions of J2ME games available on run-of-the-mill phones, which are pretty high quality. So the argument that it must be Java's fault is completely misguided.
Just one 'top list' of J2ME games available, showing some pretty professional titles, by big names and small alike:
http://www.jamster.com/fw/goto/games
More likely to be the fact android is still relatively new, comparatively small market size, etc that is keeping more professional game/app developers away from it. But I'm sure it'll mature if the market size increases.
Please get away from this "Languages are soooooo important!!!" bs. Languages just don't matter. They don't.