Python还是Java?哪个更适合移动开发和GUI应用程序
我知道用Python写应用程序会更快,但看起来Java在移动和图形用户界面(GUI)开发方面占据了主导地位。
有没有什么移动平台可以运行Python,还是说我应该选择Java呢?
3 个回答
第一个问题是你是否真的需要开发一个应用程序,这需要针对每个平台进行不同的工作,还是说你可以做一个网页应用。
如果你确实需要一个应用程序,那么你可能需要为每个平台使用不同的编程语言!比如,安卓需要用Java,而iPhone/iPad则需要用Objective-C。这也是一个很好的理由,说明你可以考虑做网页应用。
谷歌发布了一个叫做Android脚本环境(ASE)的工具,这个工具让你可以用多种脚本语言,比如Python和Ruby,来为Android编写程序。不过,目前还没有办法把用这些语言写的应用发布出去,听说谷歌正在努力解决这个问题。
更一般来说,手机设备最大的资源限制是电池电量。因为动态解释型语言通常比静态类型语言消耗更多的CPU资源,所以用Python写的程序比用Java写的程序更耗电。
此外,你还需要把整个Python运行环境打包到程序里,而Java的运行环境在设备上已经包含了。这意味着会占用更多的内存,而内存在手机上也是一种稀缺资源。
所以,至少目前我不建议用Python或类似的脚本语言来进行严肃的Android开发——它可以用于快速原型开发,但不适合做高质量的应用。我这么说心里很不舒服,因为我喜欢Python,但不太喜欢Java。一个可能的折中方案是Scala——它是静态类型的,但通过类型推断减少了很多Java的负担,开发起来感觉更像Python。而且,像Python一样,Scala也是一种混合了面向对象和函数式编程的语言(与Java不同,Java是面向对象但不太灵活的)。现在有很多人正在尝试用Scala进行Android开发,因为它可以编译成和Java代码一样高效的Java类文件。
至于iPhone的情况我就不太清楚了——考虑到苹果不允许在App Store上发布任何非官方认可语言编写的应用,我觉得这不太可能实现。
我知道有一个Python的版本可以在Windows Mobile上使用,但据我所知,还是没有办法把Python程序打包成可以发布的应用。
Java确实可以在更多的平台上使用。我建议你选择一个目标平台(或者一组目标),然后看看哪些编程语言需要的重复实现最少。
另外,当你的项目复杂到一定程度时,编程语言对速度的影响往往不大。对于最初的原型开发,确实有些语言开发起来非常快,但等到你处理完所有的异常情况,整个进度因为质量检查而延长了好几倍后,你会发现原型开发的速度其实没那么重要。
当然,根据你应用的复杂程度,这种情况可能并不成立——一个简单的小应用几乎可以在“原型时间”内完成。