首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >objective-c和Java,或者iPhone和Android之间有什么巨大的区别吗?

objective-c和Java,或者iPhone和Android之间有什么巨大的区别吗?
EN

Stack Overflow用户
提问于 2010-07-24 17:30:56
回答 7查看 9.5K关注 0票数 13

编辑:我的错,我指的是objective-c,不是c#。不知怎么回事,我想到的是iphone使用的c#。所以c#的答案很棒,谢谢,但它们有点无关紧要,抱歉。

我已经看过了,但找不到任何可以回答这个问题的东西,尽管一些人通过回答部分问题来缩短了问题。在一小群人之间,我们计划在iPhone和安卓上做一些工作,这两个人在很大程度上是分开的,但相互帮助,一些人在他们之间做图形工作。

但我们正在考虑在两者之间移动东西的可能性,不一定是应用程序,也许只是有用的类或其他东西。看看objective-c和Java,它们似乎具有相同的功能,最大的障碍是系统接口的东西,所以我们想知道,如果我们在每个系统上为这些东西创建一个抽象,这样它们就可以获得相同的输入(除非我是错的,否则不会给系统带来太大的压力?),编写一些在objective-c和Java之间转换的东西会有什么问题,比sdks中方法的位置更糟糕吗?或者,是否有一种语言的关键特性或其他语言中我们没有的东西,这意味着唯一的方法就是从头开始重写。

EN

回答 7

Stack Overflow用户

发布于 2010-07-29 18:27:52

我不会浪费时间去寻找iOS和Android之间的共同点。

跨平台几乎总是浪费时间和资源,除非跨平台功能是应用程序运行的核心。对于iPhone和安卓这样的平台来说尤其如此,这些平台都有定制的操作系统,并与硬件紧密合作。

从长远来看,跨平台开发环境会增加而不是减少复杂性。是的,这听起来很简单,但通常你会轻易地得到你想要的90%,然后你遇到了一个障碍,摧毁了你所做的所有储蓄,然后开始让你陷入困境。有许多简单的妥协和方形的钉子卡在圆孔里。

除非你的应用程序理论上可以从一个通用的网页中运行,否则跨平台不适合你。

在Objective-C和Java的具体情况下,虽然Java是Objective-C的后代,但它们没有现代的互操作性。您不能在另一个上使用其中一个的代码。

您应该花时间学习每个平台的特定API。没有捷径可走。

票数 52
EN

Stack Overflow用户

发布于 2010-07-27 20:01:03

XMLVMCodename OneiSpectrum这样的工具告诉我们,你实际上可以交叉编译Java代码(从Android应用程序或者从头开始创建)到在iPhone上运行的Objective-C代码,而不需要在苹果方面安装任何虚拟机。

我建议看Developing iPhone Applications using Java

不幸的是,苹果的Java许可协议禁止将

虚拟机移植到iPhone。在这个演示文稿中,我们介绍了一个开源Cocoa to-Objective-C交叉编译器,以及一个基于的Cocoa库的实现。在这些工具的帮助下,可以用纯Java编写iPhone应用程序。使用Cocoa的Java版本,可以将基于Java的iPhone应用程序作为Java桌面/小程序应用程序运行,该桌面/小程序应用程序可以交叉编译为在iPhone上本地运行。演讲将讨论Java-to-Objective-C交叉编译器以及基于Java的Cocoa版本的挑战。详情请访问:http://www.xmlvm.org/

为了获得更多的洞察力,可以在here上找到更多关于从Frebruary 2010年交叉编译安卓应用程序到iPhone的讨论,这篇文章记录在http://www.xmlvm.org/android/

安卓是一个面向移动设备的开源平台。由谷歌发起的Android受到了极大的关注。Android应用程序是使用Java开发的,尽管一个特殊的编译器会将类文件转换为在Android设备上用于执行应用程序的专有的、基于寄存器的虚拟机。Android为编写移动应用程序定义了自己的API。在XMLVM的帮助下,可以将基于Java应用程序交叉编译为本机iPhone应用程序。

Android应用程序是用Java编写的,并利用了Android特定的API。XMLVM提供了一个用Java编写的兼容性库,它提供与Android相同的API,但只使用基于Java的Cocoa Touch API。在交叉编译过程中,应用程序和安卓兼容库都会从Java交叉编译到Objective-C,并与Cocoa Touch兼容库链接,以生成原生iPhone应用程序。

来自2008年关于为iPhone http://www.xmlvm.org/iphone/构建Java应用程序的演讲:

苹果的iPhone在用户和开发者中都产生了巨大的兴趣。与MacOS X一样,iPhone开发环境基于Objective-C作为开发语言,并基于Cocoa作为GUI库。iPhone软件开发工具包许可协议不允许开发虚拟机。使用XMLVM,我们通过交叉编译Java到iPhone来绕过这个问题。就像Java应用程序可以交叉编译为AJAX一样,XMLVM也可以用于将Java应用程序交叉编译为Objective-C。交叉编译也是通过模仿Objective-C中基于堆栈的机器来完成的。

票数 4
EN

Stack Overflow用户

发布于 2010-07-24 17:36:45

如果您专注于抽象系统交互之类的东西,并坚持使用语言的公共子集,那么您可能会构建几乎不需要修改即可从一种语言迁移到另一种语言的类。

C#确实有比Java语言更好的泛型实现,因为C#的泛型在运行时保留了强类型。

C#也有LINQ,据我所知在Java语言中还没有对应的LINQ。LINQ提供了一种类似SQL的查询功能,该功能内置于该语言中,并完全受.NET frameowrk的支持,它允许您查询对象集合,并以一种非常函数式语言的风格进行查询。一旦查询提供程序提供了转换为其他格式的对象模型,查询提供程序就可以扩展LINQ以使用其他数据格式,如XML和SQL。LINQ还使得多核工作的并行化变得非常容易。这是对语言能力的巨大扩展。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3326110

复制
相关文章
openjdk和oraclejdk有什么区别吗?
1.授权协议的不同:OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。
wuweixiang
2018/12/14
2.1K0
Exception和Error有什么区别吗
Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。 Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。 Error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如 JVM 自身)处于非正常的、不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如 OutOfMemoryError 之类,都是 Error 的子类。 Exception 又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。不可查的 Error,是 Throwable 不是 Exception。 不检查异常就是所谓的运行时异常,类似 NullPointerException、ArrayIndexOutOfBoundsException 之类,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译期强制要求。
共饮一杯无
2022/11/28
7700
Exception和Error有什么区别吗
Java和JavaScript之间的区别
我们将在本文中比较Java语言和JavaScript语言。 JavaScript由Netscape开发。 它最初是用于客户端的脚本语言,后来又用作客户端和服务器脚本的语言。 Java由James Gosling由Sun Microsystems开发。 这些天来,JavaScript在服务器中以node.js的形式使用。 Java和JavaScript之间在程序编码,编译和运行方式方面存在许多差异。
全栈程序员站长
2022/09/08
2K0
Java和JavaScript之间的区别
解读 | IaaS、PaaS和SaaS之间有什么区别?
随着时间的推移,云计算技术对于组织来说变得越来越重要。在大量的应用程序运行在不同的云模型时,组织需要做一些工作来检查这些解决方案是否更能满足其需求。组织需要确定其投资组合中的每个应用程序都在为自己和最终用户而使用正确的云模型。
CloudBest
2020/09/30
1.9K0
解读 | IaaS、PaaS和SaaS之间有什么区别?
【Rust问答】Box 和 Cell 之间有什么本质区别?
Box 和 Cell 之间的本质区别是什么?两者主要的应用场景为何?通过一些搜索和文档阅读,我了解到两者确实有很多不同点,但是我一直没有找到对于“本质区别”这个概念的合理解答。
MikeLoveRust
2020/02/20
1K0
c++和c语言之间有什么区别
  C语言是一种古老而又经久不衰的计算机程序设计语言,大约诞生于上个世纪60年代。由于它的设计有很多优点,多年以来深受广大程序设计人员的喜爱,并逐渐 淘汰了很多其它程序设计语言。我们平时使用的大多数软件都是用C语言开发的。
诸葛青云
2019/11/11
2.3K0
c++和c语言之间有什么区别
Java int和Integer有什么区别
java 是一个完全面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java 为每一个基本数据类型都引入了对应的包装类型(wrapper class),int 的包装类就是Integer,从 Java 5 开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
joshua317
2021/11/02
7470
java中println和printf有什么区别_string和int的区别
输出结果为: 12 即打印了int型变量i的值之后不换行继续打印int型变量j的值。
全栈程序员站长
2022/11/10
6610
什么是Hypervisor?Type 1 和Type 2 之间有什么区别?
在了解 Type 1 和 Type 2 Hypervisor 之间的区别以及哪个更好之前,让我们先看看 Hypervisor 是什么?
网络技术联盟站
2021/11/19
6.2K0
什么是Hypervisor?Type  1 和Type  2 之间有什么区别?
Android中Aop和Apt有什么区别?
AOP指的是:面向切面编程(Aspect-Oriented Programming)。如果说,OOP如果是把问题划分到单个模块的话,那么AOP就是把涉及到众多模块的某一类问题进行统一管理。
乱码三千
2021/07/29
1.4K0
Android中Aop和Apt有什么区别?
云计算、大数据和物联网之间,有什么区别和联系?[通俗易懂]
随着大数据概念的提出,云计算中的分布式计算技术开始更多地被列入大数据技术,而人们提到云计算时,更多指的是底层基础IT资源的整合优化以及以服务的方式提供IT资源的商业模(如Iaas、PaaS、SaaS)。
全栈程序员站长
2022/11/08
8550
tomcat java_maven和java有什么区别
MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。 默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:
全栈程序员站长
2022/09/22
3720
java迭代和 递归的异同_递归和迭代有什么区别?简述区别
大家好,又见面了,我是你们的朋友全栈君。 你对于递归和迭代都了解吗?那么你是否知道递归和迭代的区别呢?那么下面就和小编一起来了解一下,这两者之间的区别究竟是怎样的吧! 一、递归和迭代区别 首先我们要讲
全栈程序员站长
2022/08/18
4830
JAVA Exception和IOException之间的使用区别
“IoException“(流异常,通常用在文件读取中)是”Exception”(用在所有的异常处理中)的一个分支,也就是说“Exception”的范围更大。
全栈程序员站长
2022/09/13
8020
【JAVA】synchronized 和 ReentrantLock 有什么区别呢?
软件并发已经成为现代软件开发的基础能力,而 Java 精心设计的高效并发机制,正是构建大规模应用的基础之一。
sidiot
2023/08/31
3460
Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
CyclicBarrier和CountDownLatch都是Java中常用的多线程同步工具,它们主要用来协调多个线程之间的行为,以便达到某种共同目标。虽然它们有一些相似之处,但在应用场景和使用方法上也存在着比较明显的区别。
用户1289394
2023/08/22
1660
Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
【说站】java中&和&&有什么区别
1、&&只要有一个条件不一样就是不满足,如果第一个条件就是不满足就不判断后面的条件。而&要对所有的条件都进行判断。
很酷的站长
2022/11/24
6710
【说站】java中&和&&有什么区别
Java中SynchronizedMap 和 ConcurrentHashMap有什么区别?
Java 中 SynchronizedMap 和 ConcurrentHashMap 都是线程安全的 Map 实现。它们通过不同的锁机制来保证多线程情况下对 Map 的操作正确性和并发性。
用户1289394
2023/08/22
2780
Java中SynchronizedMap 和 ConcurrentHashMap有什么区别?
你真的会玩SQL吗?EXISTS和IN之间的区别
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接、外连接 你真的会玩SQL吗?三范式、数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节点的方法 你真的会玩SQL吗?让人晕头转向的三值逻辑 你真的会玩SQL吗?EXISTS和IN之间的区别 你真的会玩SQL吗?无处不在的子查询 你真的会玩SQL吗?Case也疯狂 你真的会玩SQL吗?表表达式,排名函数 你真的会玩SQL吗?简单的 数据修改 你真的会玩SQL吗?你所不知道的 数据聚合 你真的会玩S
欢醉
2018/01/22
8580
你真的会玩SQL吗?EXISTS和IN之间的区别
点击加载更多

相似问题

运行.class和.java之间有什么区别吗?

26

**/*..java和*.java之间有什么区别?

11

A a;和A a= A()之间有什么区别吗?

10

*和+之间有什么本质的区别吗?

12

‘和’之间有区别吗?

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文