J2ME的知识对其他移动平台的概括性如何?

dim*_*ura 4 mobile android java-me

我正在考虑在我的大学学习手机软件开发课程.该课程使用J2ME和模拟器.我对手机的软件开发很感兴趣,但我觉得J2ME与iPhone和Android等新平台相比有些陈旧和有限.我对Android最感兴趣,因为我不喜欢iPhone的封闭性.

因此,如果我参加该课程,获得的技能将如何转移到像Android这样的平台?

我有一个相关的问题.我对Java(以及其他各种编程语言)很满意,但我还没有使用过J2ME.是否有任何东西使编程特别痛苦?(不管Java是不是很令人愉快)

Jes*_*own 6

从熟悉Java到熟悉J2ME应该是一个非常简单的过渡.最大的障碍可能是获得手机模拟器或构建脚本设置,以及学习如何在手机上加载和运行构建.但这就是我确信你会在课堂上的第一周内完成的那些事情.桌面Java中包含的内容与移动API之间存在一些差异(例如几乎任何Java 1.5+功能,以及某些UI包等)以及一些J2ME特定的API用来做绘画到屏幕上或者按键响应等事情,但是它们都非常像java,并且有很好的Javadoc记录,所以它们不是很难学...基本上它可能是与简化的Java版本相比,它取出了对移动应用程序不那么有用的功能.

在我看来,J2ME对移动开发是一个很好的介绍,即使它作为一个平台更加"陈旧",如果他们不为你最感兴趣的平台提供课程.它会为你介绍对于许多类型的问题,你仍然需要担心,如小外形尺寸/屏幕尺寸,内存和性能问题,使应用程序适用于具有不同能力的多个手机型号等.

在进行了近一年的J2ME开发之后,从J2ME开始到本机(非J2ME)黑莓开发对我来说并不是一个巨大的飞跃 - 主要是它意味着学习不同的构建工具以及如何使用不同的模拟器在手机上加载黑莓应用程序,用户界面的一些不同的黑莓特定包 - 根据您可以找到的教程有多好,这可能是轻而易举的,"XYZ如何转换到这个新平台".

Android可能大致有类似的跳跃 - 你可能会发现在J2ME,Blackberry和Android之间有相当多的代码你可以重用,因为所有三个平台都允许你编写基于java的代码(在我的工作中黑莓和Android版本的项目实际上通过设置依赖项目共享一堆非ui相关代码)...我认为从编码角度来看,所有三个平台之间的最大差异之一是它们具有不同的用于执行UI的库......我的意思是,他们基本上都会有绘画方法和诸如此类的东西,但是每个平台都有不同的用户界面和其他必须使用的原生包装,这些包装在易于使用的内容中有一些变化(例如:更容易在J2ME上绘制渐变比J2ME,文件系统访问在平台之间有点不同,只要您使用的API等等.

关于J2ME的痛苦事情...我会说你无法通过设备模拟器调试的问题(例如:电话呼叫中断你的应用程序,音频无法正常播放等),受保护的API(如果你正在使用像ATT这样的提供商要求这会导致你需要在你的构建上签名),而只是尝试处理具有微小分辨率和/或缓慢处理器的屏幕是最困难的...没有那么痛苦我认为你对讨论移动开发课程感到讨厌,而且无论如何,其中一些问题可能超出了你的课程范围.

总而言之,我会说学习任何移动平台都会让你更接近你想要学习某个特定平台的目标,这个平台不是作为一门课程提供的,并且你将学到很多东西.当然会概括:)

PS ...如果最终,你想学习Android,并且必须从不同的手机语言开始,我认为学习J2ME或Blackberry是最接近匹配的平台,因为它们都是基于java的,并且有一些重叠与Windows Mobile,BREW(基于C++)或iPhone(Objective C)相比,您使用了哪些工具(就像您可能将Eclipse用作所有三种IDE一样).

PPS ...很抱歉再次编辑添加这个......但我看了一下我们公司的内部文档(针对新开发人员),设置了一个Android构建环境,看看它有多疯狂(它根本不疯狂) ),它实际上非常类似于我必须做的设置黑莓环境,除了安装不同的插件和SDK.我想你会发现这两个平台中的任何一个都只是你在J2ME开发课中可能学到的一小部分.

基本上,要在Eclipse中编写android代码,你必须为Android添加一个插件:在Eclipse中,在帮助菜单下添加新软件,并添加一个下载站点,其中包含url https://dl-ssl.google.com/android/eclipse /),然后在你完成设置之后,将Eclipse中的默认JRE设置为android中的一个JRE而不是JDK中的JRE(警告:你可能还需要安装SDK工具以获得正确的JRE你想要(谷歌搜索"android sdk工具")).该插件将添加一些你需要的特定于Android的菜单选项,如"转换为android项目"...你甚至可以通过你的J2ME课程中途了解到试图建立一个Android开发环境你自己 :)


小智 5

已经有一个很好的答案,但我想加上我的2美分,并尽量不要太多余.:)顺便说一句,我的经验是在手机游戏编程,中级水平.

因此,如果我参加该课程,获得的技能将如何转移到像Android这样的平台?

如果您已经了解Java语法,那么学习J2me就会知道如何在嵌入式环境中编写代码:如何编写小代码,与桌面相比性能真的下降,并且几乎没有API暴露给您(真的很少,j2me是一个非常小的API是的,是的,已经过时了.它们只有少数常见的API,J2me和Android,因此在迁移到Android时你会有一个陡峭的学习曲线.J2me可以作为基础,但它没有太多的肉.

使用j2me,您至少可以获得嵌入式编程的基础知识:应用程序生命周期,通过模拟环境运行,构建脚本,java预处理程序(bleh),通过工具进行代码优化,通过工具进行代码混淆,提高可移植性技能,部署,新咒骂的伦理学(是的,它会搞砸).

你不会学到如此多的优化/分析/调试ine j2me环境,因为它不适合它(你将学习更多科学的"假设 - 试验 - 错误"类型的方法然后设计的方法"测量 - 计算 - 申请").相反,Android env是开发人员友好的,一切都是在Eclipse内部完成的.

事实上,J2me正在慢慢消亡,Android正处于一个良好的开端,因此后者更有价值.此趋势是与原生环境一起使用,而不是解释的......并且Android允许它,而不是J2me.

我有一个相关的问题.我对Java(以及其他各种编程语言)很满意,但我还没有使用过J2ME.是否有任何东西使编程特别痛苦?

J2me很简单.有问题的是它的便携性.一些制造商有扩展,一些运营商拥有专有API,设备具有不同的JSR(API /库),设备具有不同的Java虚拟机,因此您最终将在设备上实现不同的行为.再加上调试效率低下,有时让您的应用在设备上正常工作非常痛苦.这是最大的问题.否则J2me是一个真正精简版的J2se(版本3,如果我没记错的话会减少?),所以它与标准Java非常相似.

我认为j2me对于学术界来说是相当不错的,但如果你有兴趣超越,你应该查看Android.

再见!