J2ME vs .Net CF paper - Please review

A

alan jeeves

Hi all,

I'm in progress writing my dissertation, titled:
J2ME versus .Net CF: Can Microsoft win the mobile phone battle?

And i would love it if people can have a read of it and give their opinions.

Few things first:
* I'm a J2ME programmer
* I have/had little knowledge of .net / .net cf
* The last 2 sections are not finished

Heres the link to the dissertation in PDF format:
http://bigal.me.uk/Dissertation.pdf

What feedback i would like:
* Constructive
* state any mistakes / wrong opinions etc.
* Say anything i may have forgotten/left out

THANKS very much for any comments,

Alan
 
C

Carl Rosenberger

alan said:
Heres the link to the dissertation in PDF format:
http://bigal.me.uk/Dissertation.pdf

What feedback i would like:
* Constructive
* state any mistakes / wrong opinions etc.
* Say anything i may have forgotten/left out


Hi Alan,

in my opinion the decisive point for the near future is:

"What is the strategic decision of the major mobile phone
manufacturers?"

As far as I can see, the majority is favouring Java for it's
independance from Microsoft, for lower costs and for the
availability of a much larger number of development libraries.


On the technical side, I find .NET. easier to use. Microsoft
provides a homogeneous platfom with one GUI and one development
environment. It's a lot easier to get started than with Java and
debugging works instantaneously.


Kind regards,
Carl
 
C

Chris Tacke, eMVP

It's an interesting topic, and one that I'm sure Microsft is asking as well.
It's difficult to compare the two since Java already has a firm foothold in
the market and Microsoft bareley has any presence (especially considering
that the CF only runs on SmartPhone 03, which is currently only available in
Europe).

I don't think that saying the CF is targeted toward web-based development is
accurate - it's web cabale, but there are plenty of useful things that can
be done without the WEB. If it were purely web-centric, then the CF
wouldn't exist, as you'd just install a browser and serve up pages (a-la
MMIT).

I also notice you didn't mention Savaje as an OS, which I think has the best
performance out there because the OS itself is a JVM.

When looking at the developers, you must consider the inherent rabid
following that anything non-Microsoft often gets. Even if the CF can
deliver a better value, it doesn't mean developers will use it.

When looking at the business side, you must look at the TCO of a device.
CF-enabled devices will be CE, so they'll have good integration with Outlook
and Exchange, which for business is a huge plus and can decrease the costs
of support and improve integration into enterprise apps.

Basically I see two separate verticals- the average user and the enterprise
user. Java appeals to the first (how many average users need or want to pay
$600 for a phone?) but CE phones provide a lower TCO to a large enterprise,
with a break-even ROI often in just a few months.

-Chris
 
A

alan jeeves

Thanks for your comments - all very interesting and useful.



Its sort of odd that you both mention developers are put off of Microsoft
products - i have thought about writing about this issue really but may do
now, thought it was just me :)



Personally I'm put off the .net (and previous Visual Studio's) because it
does too much for you, if you know what i mean.



But equally its v. good for beginners - it depends how good / efficiently it
does things for you. Reminds me of Dreamweaver - old versions were poor and
it added lots of HTML unnecessarily but the latest version is really good /
tight.



My conclusion will be mainly saying about the different markets that they
will fall into - .net cf -> business, high end and j2me - mainstream, low
and high end



Therefore maybe j2me has greater potential.



Alan.
 
C

Carl Rosenberger

alan said:
Its sort of odd that you both mention developers are put off of Microsoft
products - i have thought about writing about this issue really but may do
now, thought it was just me :)

Developers are put off by monopolies and by proprietary solutions.

Microsoft discontinued Java (which could hit you very hard, if you
used Microsoft's extensions).

Microsoft discontinued old VB in favour of a new homogeneous
development platform.

That's the sort of risk that you run, if you bet on a solution that
is supplied by one company only.

Personally I'm put off the .net (and previous Visual Studio's) because it
does too much for you, if you know what i mean.

I couldn't agree less.

I really love environments that make me productive by doing all the work
for me. I like to learn the concepts behind the system only when I need them.
I find it very easy to learn listener or delegate concepts by looking at the
code that the development environment writes for me.

One of the main problems of Java development is the choice of the GUI library
that you use. There is AWT, Swing and SWT to choose from and none of the
editors really lets you do WYSIWYG development for mobile phones.

In my opinion Websphere Studio Device Developer (based on Eclipse) is the best
solution for Java development on mobile phones but in comparison to VS.NET it's
a pain to get started.
You have to find the correct virtual machine for your device, download it
individually and install it on your PocketPC yourself. A couple of different
configurations are available and you are bound to get lost in the file mess.

The reward that you get:
Eclipse clearly is superior to VS .NET with respect to refactorings,
CVS integration and navigation in your project files.

But equally its v. good for beginners - it depends how good / efficiently it
does things for you. Reminds me of Dreamweaver - old versions were poor and
it added lots of HTML unnecessarily but the latest version is really good /
tight.

I agree here:
VS .NET works a lot better for beginners.
.... but it's not cheap.

My conclusion will be mainly saying about the different markets that they
will fall into - .net cf -> business, high end and j2me - mainstream, low
and high end

I agree with Chris, that many Enterprise customers will absolutely need Outlook
and Exchange integration.

There are some solutions available for Java platforms also but I doubt that they
work as smooth and with the same performance as ActiveSync.

Therefore maybe j2me has greater potential.

I think the future is open.

If it's possible to deliver to both platforms, that's the way to go.


Kind regards,
Carl
 
V

Valentin

In my opinion, .NET CF and J2ME MIDP are very different regarding
technical specifications:

1. .NET CF is targeted for high-end PDAs and phones; MIDP is targeted
for entry level PDAs and phones.

2. .NET CF is a subset of the full .NET Framework; MIDP has a
different programming model and different non-core libraries than
J2SE.

The analogue of .NET CF in the Java world would be J2ME PP (Personal
Profile) because PP is a full subset of J2SE and requires a more
powerful device than MIDP. But PP is not very popular - I've never
heard about an implementation.


Regards,
Valentin Iliescu
 
C

Carl Rosenberger

Valentin said:
The analogue of .NET CF in the Java world would be J2ME PP (Personal
Profile) because PP is a full subset of J2SE and requires a more
powerful device than MIDP.

I agree.

But PP is not very popular - I've never
heard about an implementation.

The original Symbian Java JDK is based on JDK 1.1.x.
The subset is very similar to the Personal Profile,
the former PersonalJava.

IBM supplies a couple of J2ME configurations, including
a Personal Profile for PocketPC and other platforms.

Kind regards,
Carl
 
E

Ed Kaim [MSFT]

Michael Yuan wrote several articles on this:
http://www.javaworld.com/javaworld/jw-02-2003/jw-0221-wireless.html?
http://www.javaworld.com/javaworld/jw-05-2003/jw-0516-wireless.html?

To begin, I was product manager for the .NET Compact Framework 1.0, so
understand that my opinions are biased :)

I'll add several points:
1. It looks like your paper asks when the .NET Compact Framework was
released. The answer is March 19th, 2003 at Microsoft's Mobile Developer
Conference.

2. You kind of lump all of the J2ME technologies into a single bucket. In
reality, CDC and CLDC are very different technologies and don't even have
bytecode compatibility (they use different compilers, class libraries, and
virtual machines). Referring to the CLDC stack as being a trimmed down
version of J2SE is misleading because it really doesn't have anything in
common besides the java language syntax. If your paper is talking about the
"successful" version of J2ME, you should limit it to the CLDC 1.0/MIDP 1.0
stack, which has been the only version adopted by anyone so far.

3. You state that one of the goals of this paper is about deciding which
programming "language" a success. I think you may be trying to ask which
programming "platform" will be a success. One of the key things about .NET
in development is that developers aren't limited to a single syntax. Today
it's VB and C# (and C++ if you go native), but more languages can be added
if the developer demand is there. Either way, I think both platforms will be
successful in their own places. The real question is which places will have
a greater impact on the mobile industry at large.

4. You state that C# is the main programming language of .NET. This is not
true, mostly because the .NET Framework is language agnostic. In fact, VB is
more widely used on both the desktop and device versions. This is largely
due to the 6+ million Visual Basic developers worldwide. Most developers
I've met who have come to the .NET Compact Framework from J2ME use C#
because it is more familiar to Java developers.

5. For a more detailed comparison of features between the two, there is a
review at builder.com at http://builder.com.com/5100-6374-1049886.html.

6. Manufacturer-specific device extensions are not a long-term benefit in
J2ME. After all, if J2ME's goal is WORA, those features can't be used in
multi-device environments. For example, you won't have Nokia's non-standard
media specifics on a Motorola phone. The answer to this was to create new
JSRs that would standardize a new set of features (such as Siemen's mobile
messaging or Nokia's mobile media). Unfortunately, these take about two
years to get through the whole process, upon which you have to add
development and compatibility testing. After that, you can go through
deployment testing and hopefully have a device out with the new features
within 3 years. The initial JSR review ballot for MIDP 2.0, which adds some
critical things developers use for building games, was proposed on April 10,
2001. I've only started seeing devices that support it in the past few
months.

7. You say that you must use the Visual Studio IDE to compile .NET Compact
Framework applications. That isn't true, and it's certainly not a benefit
that Java doesn't have good IDE support for J2ME yet. The lack of good IDE
support is primarily due to the fact that the MIDP platform is very weak,
resulting in a considerably amount of effort to build tools that do anything
more than notepad could, such as for UI layout.

8. You're right about J2ME emulators not emulating hardware properly. That's
because they're not "emulators", they're "simulators". The emulator that
comes with the .NET Compact Framework, on the other hand, is a full-blown
x86 virtual machine, providing full fidelity support for the OS and apps
running. When the CE emulator runs, it loads a full CE OS image (which could
be Pocket PC, Smartphone, or custom build) and treats it as though it was a
completely separate machine.

9. You say that "some" of the MSDN library has been put online. Actually, it
is all online and is kept up-to-date. New articles and samples are
refgularly posted.

10. "Windows Mobile" is the new branding for "Pocket PC" and "Smartphone" as
of 2003. That means that devices released before 2003 are called Pocket PC,
Smartphone, Pocket PC Phone Edition, etc, and devices released after are
"Windows Mobile for X". This is just a clarification.

11. Regarding performance, MIDP apps are completely interpretted. .NET
Compact Framework apps are JIT-compiled, meaning that the first invoke takes
the compilation hit for moving IL to native code, but future calls to the
same code will use cached native code. Cached code is not held beyond the
lifetime of the app, so the process begins again on next invocation.

12. The "economic" section make a lot of assumptions that may not be
correct. For example, Java may be more mature than C#, but VB is more mature
than Java. VB's evolution has gone from its 1991 incarnation to its current
state. The cost decision is also assuming that a company doesn't already
have tools. In most .NET Compact Framework cases, a company already has an
MSDN subscription and realizes that they can build mobile apps with tools
they already own.

13. Device cost has many different considerations. If you're deploying to a
PDA, Pocket PCs give you the best flexibility because you can buy different
types of Pocket PCs from different vendors (there are over 35) with
different types of functionality for different purposes, such as some with
bluetooth and some with WiFI, others with GPRS. All of those devices can use
the same app without development changes. I'm not aware of companies that
are willing to put development effort into building apps for devices they
don't own (or put company info on them). There are Pocket PCs below $200,
even before volume discounts.

14. Regarding application provisioning, you make a huge assumption about how
games get deployed to devices. You seem to be familiar with a specific
vending system, but you should be aware that these systems aren't just
free--they require a lot of custom development. If you get a chance to talk
to a major game warehouse, ask them how many different devices they'll
support. I spoke with a VP from one of the mobile gaming warehouses in the
UK and he told me that they won't support more than two devices if the app
is J2ME becuase the support costs due to app imcompatibilities (such as
usability) are too high, even though they're just the warehouse.

15. Your sample application is very simple, which doesn't give good insight
into the world of J2ME. Why don't you write something a little more complex,
such as an app that gets your local coordinates from a GPS device and sends
them to a mapping Web service, such as MapPoint, to get directions to the
nearest Starbucks? The fact is that you wouldn't be able to write that
because of J2ME's weaknesses.
- You'd have to use a real device, so MIDP 1.0 would probably be the
choice
- You wouldn't easily be able to access the GPS device, unless the vendor
provided J2ME libraries
- MIDP 1.0 doesn't support floating point values, so your coordinates
would be very innaccurate
- Calling the Web service would be a ton of work because no J2ME devices
have good support for Web services, causing you to have to roll your own
stack
- Displaying the results would be a challenge, giving the fact that MIDP
doesn't really have any good UI support for tables or grids

16. Additional things you should consider:
- Local and remote database access
- Reading or writing data to a file (many people are surprised at how
MIDP can't do that)
- Reusing classes in binary form between the desktop, server, and device
- User interface controls, such as tab pages and datagirds

Hope this helps.
 
A

alan jeeves

Thanks Ed,


your reply is VERY helpful - probably your every point has given me
something to add/modify in my paper!



I've got just a few points on what you said which ill appreciate your
comments on...


7. You say that you must use the Visual Studio IDE to compile .NET Compact
Framework applications. That isn't true,



Are you sure? I thought the .net compilers were free but you needed VS .net
to compile .netcf apps? If you dont need VS .Net - then do you need it to
run the emulators?


9. You say that "some" of the MSDN library has been put online. Actually, it
is all online and is kept up-to-date. New articles and samples are
refgularly posted.



Thanks for pointing this out - is the reference for/inside the Object
Browser online anywhere?



Some extra queries that i hope someone can help me out on:

*Does MIDP do any clever memory/code things like .net cf does when caching
native code after interpreting IL code?

*Are JVM or Windows built into the hardware atall?

*Is there anything like the Java layout mangers for .net cf?



Thanks for all the feedback ive got already and i hope people will continue,
and i can give some help back (someday)



Alan
 
E

Ed Kaim [MSFT]

7. You say that you must use the Visual Studio IDE to compile .NET
Compact
Are you sure? I thought the .net compilers were free but you needed VS ..net
to compile .netcf apps? If you dont need VS .Net - then do you need it to
run the emulators?


Check out http://dotnetdn.com/without-visual-studio/ for the directions.
I've never tried this myself, but I've been told that it works. It's not
supported by Microsoft, but it's a way to develop without VS.

As for the emulators, you don't need VS for those, although I don't know if
there's any way to debug into them today without it.
Thanks for pointing this out - is the reference for/inside the Object
Browser online anywhere?

Reference documentation fo Object Browser is at
http://msdn.microsoft.com/library/d...y/en-us/vsintro7/html/vxurfobjectbrowsers.asp.
*Does MIDP do any clever memory/code things like .net cf does when caching
native code after interpreting IL code?

Run a search for "CLDC HotSpot". I know this was super hyped a few years
ago, but it turns out that the memory requriements are actually pretty
heavy. For example, the native JITted instructions for MSIL turn out to be
almost 5 times the size of the original MSIL in some cases for the .NET
Compact Framework. I don't know what the ratio is for Java bytecode, but I
would imagine it to be similar. When you think about the typical cell phone,
having several MB of RAM isn't very likely.
*Are JVM or Windows built into the hardware atall?

I remember there being discussion of hardware companies making chips that
would use Java bytecode instead of typical CPU instructions, but don't know
where that went. Some people will argue that Smart Cards have Java burned
into them, but that's still software (or firmware) and not on the board.
*Is there anything like the Java layout mangers for .net cf?

You can probably find them, but the biggest problem is that the vast
majority of layout is flow-based, which introduces a bunch of problems when
you have to consider all of the different device characteristics.
 
C

Carl Rosenberger

alan said:
*Does MIDP do any clever memory/code things like .net cf does when caching
native code after interpreting IL code?

MIDP implementations may behave quite differently.

Some of the best small-footprint Java VMs are supplied by IBM
along with Websphere Studio Device Developer. There are a couple
of dozen different VMs with hundreds of optimisation switches.
The JXE bytecode format is optimised for low-ressource systems.

*Are JVM or Windows built into the hardware atall?

Hardware support for Java:
http://www.arm.com/products/solutions/Jazelle.html
http://www.ajile.com/products.htm


Kind regards,
Carl
 
C

Carl Rosenberger

alan said:
Those sound quite good ideas but are they used in any decent commercial
devices?

Why don't you simply contact the companies and ask them?
They are just an email away.

My best guess is that the above hardware is still too
expensive for mobile phones.


Kind regards,
Carl
 
N

Neil Cowburn [MVP]

In theory, you can use the command-line debugger, cordbg.exe, to debug
..NET CF apps since it supports remote device connects through the 'conn'
command. However, I've not got this working with the emulators yet,
although I can programmatically launch the emulators from a console app
I wrote by hooking into the ConMan APIs.

--
Neil Cowburn, MVP
Co-founder, OpenNETCF.org
Technologist, Content Master Ltd
Microsoft .NET Compact Framework MVP

www.opennetcf.org | www.contentmaster.com
 
G

Ginny Caughey [MVP]

Carl,

I think mobile phone carrier support is at least as important as
manufacturer support since many carriers support phones from a variety of
manufacturers. Customers will choose their carriers based on service but
also on the features available to them on the phones supported, so carriers
have a powerful incentive to please as many people as practical.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top