我目前正在.Net项目中工作但是从大学毕业后我也有很好的Java背景。最近我问自己,如果多平台语言(如Java或基于Scala的VM)没有增加?
让我们来看看Suns WORA 写一次,随处运行原则,已被改写为一次写入,TEST无处不在因为过去特别是桌面应用程序是/仍然是Windows域名。但是在过去的几年里,有很多变化,比如
因此,创建针对多平台的应用程序应该是一种合理的方法。例如,为什么一个小型/中型公司在使用Linux时可以为windows / mac支付很多钱(老实说,当你不是游戏玩家时,你不需要Windows;))。然而,那些公司更喜欢在他们的机器上运行的软件(也许首席执行官有MAC,因为他能负担得起但需要相同的应用程序。)Eclipse RCP可以提供例子,然后它真的是WORA。
我现在喜欢在C#上工作,但在1到2年内,当我想拥有自己的小公司时,我将使用Linux,开发可能会集中在我刚才写的东西上。 我只是想知道其他人在想什么(也许我会改变主意)。
请不要在Linux与Windows vs Mac上开战(我使用前两个)。它只是关于多平台是否是未来的好方法,或者如果您通过单一平台(特殊功能)的优势获得更多。
答案 0 :(得分:4)
我为一家Qt咨询公司工作,该公司多年来一直在编写多平台应用程序,我在KDE的OSX端口工作,之前在一家提供Windows / Linux / Mac客户端的公司工作。
支持多种平台所带来的明显好处是:
缺点:
我仍然认为这是值得的,并同意你的意见,这是应用程序的未来。真的,有足够好的高级技术,没有必要将您的市场限制在单一平台的用户身上,Linux在新兴市场是一个巨大的市场,因此随着时间的推移,能够运行您的应用程序将变得越来越重要
我见过的跨平台解决方案效果很好:
答案 1 :(得分:1)
是的,这种情况正在发生,但这是一个非常缓慢的过程。
您可以从80年代早期追溯到UCSD Pascal P系统。在90年代我们得到了JVM,在naughties我们得到了CLR。这些较新的VM均支持来自第三方的多种语言。例如,Python长期拥有自己的VM,但也有一个在JVM上运行的版本,名为Jython,另一个版本在.NET的CLR上运行,名为Iron Python。
存在以多种语言为目标的其他VM。 Parrot VM最初是为Python和Perl 6创建的。Reia语言在Erlang的BEAM VM上运行。我确定还有其他例子。
最重要的是,有许多语言已经跨平台了十年或两年,如Smalltalk,早期版本的Perl,Ruby等。
这是一种长期的构造转变。它是由计算机变得越来越快的事实驱动的,而我们使用计算机的许多任务不需要变得更快。因此,我们可以使用高级语言编写程序来完成这些任务,而这些任务在过去是没有意义的。在80年代早期,成功的新文字处理器是用汇编语言编写的。在90年代,C。今天,Javascript。
答案 2 :(得分:0)
如果您喜欢C#
,请查看单http://www.mono-project.com/Main_Page如果您更喜欢java
,请使用SWT(http://www.eclipse.org/swt/)YMMV
答案 3 :(得分:0)
如果您要花费数十万(或数百万)美元开发应用程序,那么它能够在尽可能多的计算机上运行是有意义的。就在几年前,平台具有许多平台特性,但随着Mono等跨平台编译器的出现,这种区别正在迅速消失。
答案 4 :(得分:0)
全部取决于您开发的软件的活动域... 如果最终用户正在或计划使用多重专利形式,那么您必须关心它!如果没有,您可以开发客户使用的平台!
当然,有些人会说:即使所有客户都在Windows上,MacOS上的开发效率更高......但这是另一个问题!
答案 5 :(得分:0)
通常,您的用户通常更喜欢看起来和行为类似于原生应用程序的应用。许多跨平台框架非常擅长模拟本机外观。请注意,如果你的应用程序没有原生的感觉(可能是通过你选择的工具包中的一些怪癖),批评者会永远打败你。
此外,使用跨平台工具包的问题实际上取决于您要定位的应用程序域。例如,如果您正在使用视频,那么创建具有良好用户体验的跨平台应用程序非常具有挑战性。另一方面,企业内部常用的CRUD(创建 - 更新 - 删除)应用程序是使用跨平台语言/工具包进行开发的绝佳选择。
此外,Java在企业内部部署的应用程序非常流行的一个原因是您可以轻松部署更新(通过Java Web Start - 我认为C#也有类似的更新技术) 。但是,一旦您走出业务墙,大多数用户都会回避Java Web Start应用程序。