<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Porting Java Applications</title>
	<atom:link href="http://mobhappy.com/blog1/2006/07/18/porting-java-applications/feed/" rel="self" type="application/rss+xml" />
	<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/</link>
	<description>Russell Buckley and Carlo Longino on mobile technology.</description>
	<lastBuildDate>Tue, 31 Jan 2012 19:56:58 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
	<item>
		<title>By: Harishankar</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-102172</link>
		<dc:creator>Harishankar</dc:creator>
		<pubDate>Mon, 30 Apr 2007 04:50:32 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-102172</guid>
		<description>Some rich games, using lots of memory and other resources would need a careful manual porting methods instead of automated tools. As the memory usage has to be perfectly tuned for each device knowing it capablities. Such projects are better cost effective when outsourced to Porting labs like www.smackall.com</description>
		<content:encoded><![CDATA[<p>Some rich games, using lots of memory and other resources would need a careful manual porting methods instead of automated tools. As the memory usage has to be perfectly tuned for each device knowing it capablities. Such projects are better cost effective when outsourced to Porting labs like <a href="http://www.smackall.com" rel="nofollow">http://www.smackall.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: CBCD</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-18942</link>
		<dc:creator>CBCD</dc:creator>
		<pubDate>Thu, 20 Jul 2006 03:21:30 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-18942</guid>
		<description>Sorry, that is www.small-device.com</description>
		<content:encoded><![CDATA[<p>Sorry, that is <a href="http://www.small-device.com" rel="nofollow">http://www.small-device.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: CBCD</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-18940</link>
		<dc:creator>CBCD</dc:creator>
		<pubDate>Thu, 20 Jul 2006 03:18:19 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-18940</guid>
		<description>There is no automated solution to this problem.  A combination of MobileComplete (remote access and automated testing for mobile devices) and labor-intensive app porting (through Indian outsourcing company Small Devices www.small-devices.com) will do the trick.</description>
		<content:encoded><![CDATA[<p>There is no automated solution to this problem.  A combination of MobileComplete (remote access and automated testing for mobile devices) and labor-intensive app porting (through Indian outsourcing company Small Devices <a href="http://www.small-devices.com" rel="nofollow">http://www.small-devices.com</a>) will do the trick.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Cheng</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-18936</link>
		<dc:creator>Stephen Cheng</dc:creator>
		<pubDate>Thu, 20 Jul 2006 03:08:41 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-18936</guid>
		<description>Raddedas, although an automated optimizer does assist in the porting process as Russell and Thomas has pointed out, that‚Äôs not mBooster‚Äôs biggest value. We believe the biggest values of mBooster are to increase sales and to increase productivity, and not to reduce porting cost and certification costs (if you end up with less builds). However if you are using just to reduce porting cost, we are not going to complain ;-)

We are in an interesting position in the industry, as we get to see games and apps very early in the development process. A couple of years back, the rule for the professional developers was to write as few classes as possible, and not to use a framework. That has changed - I know of at least 3 of top 5 US mobile game publishers which had recently completed, or in the process of developing an OO based development framework. With the diversity of handsets with defects and different capabilities, an OO development framework offers immense productivity increase in development, QA and porting. Of course an OO based development framework does have size overhead, but there‚Äôs where mBooster come in.

Especially for the non-game content, it is very important to keep the code base easy to understand and maintain. It is also easy to overlook the advantage of being able to quickly adapt the code-base to target a new business opportunity in an adjacent market. Although it is possible to do most optimizations by hand (though I would dispute the claim you could replicate mBooster‚Äôs size optimization in a few days :-), the code base would be &quot;corrupted&quot;. There are two answers: 
1)	to keep the core code base pristine, and repeat the same optimizations whenever you need to do a production release
2)	to bite the bullet and &quot;corrupt&quot; the code base with optimizations at significant long term cost

mBooster can be very cost effective. We have a customer who had to take a game in the back catalogue to China due to a publisher‚Äôs request. They had to reduce the size of the Nokia Series 40 version (63kB) to less than 57kB because of the special constraints of Nokia Series 40 handsets in China. mBooster optimized to slightly less than 57kB, so they managed to eliminate the entire manual optimization/removal of features process. It was cheaper, quicker and much less hassle to use mBooster despite they only used mBooster a single build for this particular game. They end up with better content too since no features were removed.</description>
		<content:encoded><![CDATA[<p>Raddedas, although an automated optimizer does assist in the porting process as Russell and Thomas has pointed out, that‚Äôs not mBooster‚Äôs biggest value. We believe the biggest values of mBooster are to increase sales and to increase productivity, and not to reduce porting cost and certification costs (if you end up with less builds). However if you are using just to reduce porting cost, we are not going to complain <img src='http://mobhappy.com/blog1/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>We are in an interesting position in the industry, as we get to see games and apps very early in the development process. A couple of years back, the rule for the professional developers was to write as few classes as possible, and not to use a framework. That has changed &#8211; I know of at least 3 of top 5 US mobile game publishers which had recently completed, or in the process of developing an OO based development framework. With the diversity of handsets with defects and different capabilities, an OO development framework offers immense productivity increase in development, QA and porting. Of course an OO based development framework does have size overhead, but there‚Äôs where mBooster come in.</p>
<p>Especially for the non-game content, it is very important to keep the code base easy to understand and maintain. It is also easy to overlook the advantage of being able to quickly adapt the code-base to target a new business opportunity in an adjacent market. Although it is possible to do most optimizations by hand (though I would dispute the claim you could replicate mBooster‚Äôs size optimization in a few days <img src='http://mobhappy.com/blog1/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , the code base would be &#8220;corrupted&#8221;. There are two answers:<br />
1)	to keep the core code base pristine, and repeat the same optimizations whenever you need to do a production release<br />
2)	to bite the bullet and &#8220;corrupt&#8221; the code base with optimizations at significant long term cost</p>
<p>mBooster can be very cost effective. We have a customer who had to take a game in the back catalogue to China due to a publisher‚Äôs request. They had to reduce the size of the Nokia Series 40 version (63kB) to less than 57kB because of the special constraints of Nokia Series 40 handsets in China. mBooster optimized to slightly less than 57kB, so they managed to eliminate the entire manual optimization/removal of features process. It was cheaper, quicker and much less hassle to use mBooster despite they only used mBooster a single build for this particular game. They end up with better content too since no features were removed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anders Borg</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-18878</link>
		<dc:creator>Anders Borg</dc:creator>
		<pubDate>Wed, 19 Jul 2006 22:24:38 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-18878</guid>
		<description>&quot;Can we not call it JME now?&quot;

Officially it&#039;s &quot;Java ME&quot; now (for Java Platform, Micro Edition). I guess Sun wanted to be clear that it&#039;s Java. After all, Java is a strong brand with positive vibes.</description>
		<content:encoded><![CDATA[<p>&#8220;Can we not call it JME now?&#8221;</p>
<p>Officially it&#8217;s &#8220;Java ME&#8221; now (for Java Platform, Micro Edition). I guess Sun wanted to be clear that it&#8217;s Java. After all, Java is a strong brand with positive vibes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Delport</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-18701</link>
		<dc:creator>Jason Delport</dc:creator>
		<pubDate>Wed, 19 Jul 2006 10:27:19 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-18701</guid>
		<description>I used mBooster in a previous capacity and it was very impressive. It made porting much easier because it created more space to squeeze everything into the 64Kb max for Nokia S40.v1 devices (MIDP 1... urgh). That being said the real skill in porting ultimately comes from device knowledge and experience assisted, of course, by wonderful tools like J2ME Polish and Antenna. 

Can we not call it JME now? Or is that not allowed? :)</description>
		<content:encoded><![CDATA[<p>I used mBooster in a previous capacity and it was very impressive. It made porting much easier because it created more space to squeeze everything into the 64Kb max for Nokia S40.v1 devices (MIDP 1&#8230; urgh). That being said the real skill in porting ultimately comes from device knowledge and experience assisted, of course, by wonderful tools like J2ME Polish and Antenna. </p>
<p>Can we not call it JME now? Or is that not allowed? <img src='http://mobhappy.com/blog1/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Raddedas</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-18696</link>
		<dc:creator>Raddedas</dc:creator>
		<pubDate>Wed, 19 Jul 2006 09:37:29 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-18696</guid>
		<description>Unless you are writing a very trivial or ugly app no IDE will be able to seemlessly port across all devices, and a lot of the reasons for that are not specific to Java.  Claiming that the restrictions imposed by handsets are tied into Java is disingenious - Java has become so widespread because some flexibility had to be given in the specs, and this has made it the only *mass market* platform worth developing for (except BREW in a few countries).  Any open platform which becomes deployed on multiple vendor&#039;s devices starts to fragment, as Flash Lite is doing despite having tiny market penetration split between two largely incompatible versions.

Adopting a one-size-fits-all approach can work for simple/ugly apps and sometimes it is forced on you when eg. you have no specialist hosting capable of delivering device-specific binaries; for these cases tools like mBooster are a particular help.  However it&#039;s the wrong approach for most mobile apps because it leads to either needlessly restricting the app for the lowest common denominator, or ignoring the mass market low-end phones and concentrating only on the easy high-end devices. Here&#039;s an incomplete summary of differences you (may) have to factor into porting:

JAVA
 - (many) handset-specific bugs, which get the most press but really once you know them can safely be ignored / abstracted away
 -  the exact MMAPI code needed to play sounds efficiently (one of the worst areas)
 - key codes, whether release events are handled reliably, etc (though some of this can be abastracted away)

HANDSET
 - UI considerations:
     - pen vs QWERTY vs Suretype vs standard numeric
     - available keys
 - graphics optimised for the different screen sizes
 - JPEG support
 - alpha transparency support
 - PNG loading bugs (eg. Sagem tearing, Samsung white/transparency misloading)
 - supported sound formats
 - optional API support
 - jar sizes, and what functionality you have to drop for the small ones

mBooster is a useful tool for your arsenal which helps with the last point, good for squeezing in extra functions but not really a substitute for writing efficient code designed for a constrained platform.  DashO is another alternative (though not as good), and I&#039;ve heard if you start with the right design you can achieve most of the mBooster savings with a few days of building custom tools.
I would argue it is better to ditch 90% of what you learnt about good OOP design principals though, coding for minimum memory footprint and heap fragmentation, etc etc.  If you then still need extra space, as with any other tool you then assess whether the price justifies the gains and plan accordingly.  Great to know it&#039;s there, but I have heard the price per developer is somewhere north of Photoshop so not within everyone&#039;s budget.

There&#039;s a wide spectrum of approaches to the porting world.  APIs like Polish can help with the porting alongside mBooster, as they also address a number of handset bugs and provide a rather lardy way of making the app look prettier than an lcdui interface.  Systems like Tira Wireless&#039; Jump platform offer the next level of automated porting if you have some VC cash to spend and want to be further abstracted from the underlying issues.  Finally you can actually know what you&#039;re doing and learn all the handset issues the hard way, abstracting into an ultra compact reusable platform, which not everyone has time for - on the plus side that gives you absolute control over everything you put on screen, but on the minus side you then have absolute responsibility to put everything on screen correctly.
Your approach is dictated by your experience, your timeframes and your budget.  mBooster can help whichever approach is best for you because it&#039;s just a tool, and only a small part of the picture.</description>
		<content:encoded><![CDATA[<p>Unless you are writing a very trivial or ugly app no IDE will be able to seemlessly port across all devices, and a lot of the reasons for that are not specific to Java.  Claiming that the restrictions imposed by handsets are tied into Java is disingenious &#8211; Java has become so widespread because some flexibility had to be given in the specs, and this has made it the only *mass market* platform worth developing for (except BREW in a few countries).  Any open platform which becomes deployed on multiple vendor&#8217;s devices starts to fragment, as Flash Lite is doing despite having tiny market penetration split between two largely incompatible versions.</p>
<p>Adopting a one-size-fits-all approach can work for simple/ugly apps and sometimes it is forced on you when eg. you have no specialist hosting capable of delivering device-specific binaries; for these cases tools like mBooster are a particular help.  However it&#8217;s the wrong approach for most mobile apps because it leads to either needlessly restricting the app for the lowest common denominator, or ignoring the mass market low-end phones and concentrating only on the easy high-end devices. Here&#8217;s an incomplete summary of differences you (may) have to factor into porting:</p>
<p>JAVA<br />
 &#8211; (many) handset-specific bugs, which get the most press but really once you know them can safely be ignored / abstracted away<br />
 &#8211;  the exact MMAPI code needed to play sounds efficiently (one of the worst areas)<br />
 &#8211; key codes, whether release events are handled reliably, etc (though some of this can be abastracted away)</p>
<p>HANDSET<br />
 &#8211; UI considerations:<br />
     &#8211; pen vs QWERTY vs Suretype vs standard numeric<br />
     &#8211; available keys<br />
 &#8211; graphics optimised for the different screen sizes<br />
 &#8211; JPEG support<br />
 &#8211; alpha transparency support<br />
 &#8211; PNG loading bugs (eg. Sagem tearing, Samsung white/transparency misloading)<br />
 &#8211; supported sound formats<br />
 &#8211; optional API support<br />
 &#8211; jar sizes, and what functionality you have to drop for the small ones</p>
<p>mBooster is a useful tool for your arsenal which helps with the last point, good for squeezing in extra functions but not really a substitute for writing efficient code designed for a constrained platform.  DashO is another alternative (though not as good), and I&#8217;ve heard if you start with the right design you can achieve most of the mBooster savings with a few days of building custom tools.<br />
I would argue it is better to ditch 90% of what you learnt about good OOP design principals though, coding for minimum memory footprint and heap fragmentation, etc etc.  If you then still need extra space, as with any other tool you then assess whether the price justifies the gains and plan accordingly.  Great to know it&#8217;s there, but I have heard the price per developer is somewhere north of Photoshop so not within everyone&#8217;s budget.</p>
<p>There&#8217;s a wide spectrum of approaches to the porting world.  APIs like Polish can help with the porting alongside mBooster, as they also address a number of handset bugs and provide a rather lardy way of making the app look prettier than an lcdui interface.  Systems like Tira Wireless&#8217; Jump platform offer the next level of automated porting if you have some VC cash to spend and want to be further abstracted from the underlying issues.  Finally you can actually know what you&#8217;re doing and learn all the handset issues the hard way, abstracting into an ultra compact reusable platform, which not everyone has time for &#8211; on the plus side that gives you absolute control over everything you put on screen, but on the minus side you then have absolute responsibility to put everything on screen correctly.<br />
Your approach is dictated by your experience, your timeframes and your budget.  mBooster can help whichever approach is best for you because it&#8217;s just a tool, and only a small part of the picture.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Landspurg</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-18690</link>
		<dc:creator>Thomas Landspurg</dc:creator>
		<pubDate>Wed, 19 Jul 2006 08:07:50 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-18690</guid>
		<description>All of you are right: size if only a small part of the porting issue. At the beginning, it&#039;s not really speed or size which is the major issue, it&#039;s more difference in handsets and VM implementations. To solve this, then you start to add code in your application to try to manage with a single code base these differences...Then the code size increase, and that&#039;s where a solution like this one is interesting.
  Another approach is something like J2mepolish, right. But remember that if you want to have a signed app, that&#039;s a cost per binary, and not per application if I remember well, plus all the extra added value to have a single binary (one runtime for different platform). Even without being signed, the pain of managing hundreds of binaries IS big!</description>
		<content:encoded><![CDATA[<p>All of you are right: size if only a small part of the porting issue. At the beginning, it&#8217;s not really speed or size which is the major issue, it&#8217;s more difference in handsets and VM implementations. To solve this, then you start to add code in your application to try to manage with a single code base these differences&#8230;Then the code size increase, and that&#8217;s where a solution like this one is interesting.<br />
  Another approach is something like J2mepolish, right. But remember that if you want to have a signed app, that&#8217;s a cost per binary, and not per application if I remember well, plus all the extra added value to have a single binary (one runtime for different platform). Even without being signed, the pain of managing hundreds of binaries IS big!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Cheng</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-18656</link>
		<dc:creator>Stephen Cheng</dc:creator>
		<pubDate>Wed, 19 Jul 2006 03:30:48 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-18656</guid>
		<description>Declaration of interest: I am the CEO and co-founder of Innaworks (www.innaworks.com).

To respond to wookie and Kiren, mBooster is similar to an obfuscator in terms of what it achieves: size reduction and performance increase. However mBooster is a full featured optimizing re-compiler, and typically deliver 10-30% on top of proguard. At the JavaOne conference this year, I demonstrated mBooster on a well known publicly available mobile app delivering 24% size reduction.

There are many contributor factors to the difficulties of porting a mobile game and application to the whole range of mobile devices, including
1. Different screen sizes and capabilities
2. JVM bugs and implementation differences
3. Size

Size is a significant factor for many serious J2ME games and applications. I am not going to claim that size is an issue for all J2ME apps - because there are some very cool apps small enough to fit into every phone. However there are many mobile apps bigger than 30kB, 64kB, 128kB, which are incidentally the application JAR size limits for DoJa 2.5, Nokia Series 40 version 1, and Nokia Series 40 version 2. These phones comprise of a large percentage of the phone handsets out there. 

If you would like to address as big a market as possible, which is important for a consumer facing application such as mobile banking, email and social network apps, then it typically makes commercial sense to target as wide a range of phones as possible. 

That&#039;s how mBooster could help in porting. Porting these applications to the more constrained phone often involves removing features, replacing the graphics and sound with a lower-grade version. With an optimization solution you get more space so porting become easier as you may no longer need to remove any feature (or do less work). This saves time and money. You would end up with a better (more featured) app for the low end phones as well.</description>
		<content:encoded><![CDATA[<p>Declaration of interest: I am the CEO and co-founder of Innaworks (www.innaworks.com).</p>
<p>To respond to wookie and Kiren, mBooster is similar to an obfuscator in terms of what it achieves: size reduction and performance increase. However mBooster is a full featured optimizing re-compiler, and typically deliver 10-30% on top of proguard. At the JavaOne conference this year, I demonstrated mBooster on a well known publicly available mobile app delivering 24% size reduction.</p>
<p>There are many contributor factors to the difficulties of porting a mobile game and application to the whole range of mobile devices, including<br />
1. Different screen sizes and capabilities<br />
2. JVM bugs and implementation differences<br />
3. Size</p>
<p>Size is a significant factor for many serious J2ME games and applications. I am not going to claim that size is an issue for all J2ME apps &#8211; because there are some very cool apps small enough to fit into every phone. However there are many mobile apps bigger than 30kB, 64kB, 128kB, which are incidentally the application JAR size limits for DoJa 2.5, Nokia Series 40 version 1, and Nokia Series 40 version 2. These phones comprise of a large percentage of the phone handsets out there. </p>
<p>If you would like to address as big a market as possible, which is important for a consumer facing application such as mobile banking, email and social network apps, then it typically makes commercial sense to target as wide a range of phones as possible. </p>
<p>That&#8217;s how mBooster could help in porting. Porting these applications to the more constrained phone often involves removing features, replacing the graphics and sound with a lower-grade version. With an optimization solution you get more space so porting become easier as you may no longer need to remove any feature (or do less work). This saves time and money. You would end up with a better (more featured) app for the low end phones as well.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wookie</title>
		<link>http://mobhappy.com/blog1/2006/07/18/porting-java-applications/comment-page-1/#comment-18515</link>
		<dc:creator>wookie</dc:creator>
		<pubDate>Tue, 18 Jul 2006 22:02:16 +0000</pubDate>
		<guid isPermaLink="false">http://mobhappy.com/blog1/2006/07/18/porting-java-applications/#comment-18515</guid>
		<description>Really, Innoworks offers just a more advanced obfuscator [than open source ones]. I can&#039;t see how it really can ease the task of porting application to various handsets.</description>
		<content:encoded><![CDATA[<p>Really, Innoworks offers just a more advanced obfuscator [than open source ones]. I can&#8217;t see how it really can ease the task of porting application to various handsets.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

