iOS应用程序可以使用Java开发吗?

Dev*_*Joe 5 mobile android ios

我是一名网络开发人员,正在考虑深入研究移动应用程序开发。到目前为止我所知道的语言有 PHP、Python、SQL、Js、HTML 和 CSS,现在都已经掌握得很好了。目前,我开始深入研究 Java,因为据我所知,它是用于原生 Android 应用程序开发的语言。有趣的是,我看到一些帖子(也在这个论坛中)说 Java 也可以用来开发 iOS 兼容的应用程序,而其他消息来源评论说苹果完全反对跨开发者,你应该使用 Swift 开发 iOS 应用程序当涉及到原生选择和最佳用户体验时。所以我想知道这个论坛的答案;是否可以使用 Java 开发 iOS 应用程序?

dat*_*ram 7

帖子已经发布了几个月了,但我认为有类似问题的人可能会通过网络搜索找到这个问题,所以这个回复是给他们的。就背景而言,我专业编写 Java 大约五年了,当 Java 被认为是未来时我就学会了编程。

如果问题是“你能编写 Java 代码并在 iOS 上运行它吗?” 那么答案是“技术上是可以的”。但我会谨慎考虑这是否是我真正想做的事情。

它需要一定的技巧才能使其发挥作用。之前的答案中链接的工具,Codename One,给我的印象是一个相当重量级的框架。如果我的项目已经提交给 Java 代码库,我会考虑使用它,但我的本能是避免在新项目中依赖它。

到 2023 年,了解 Java 会有很多优势,但在我看来,跨平台移动开发并不是最引人注目的用例。

在当今时代,您可能想要学习 Java 的一些原因包括:

  • 在 Android 上开发。虽然 Android 现在推荐 Kotlin 作为新项目的首选语言,但 Java 是该平台上 10 多年来唯一的一流语言,因此能够读取、编写和重用 Java 代码和库是有利的。
  • 深入了解其他 JVM 语言,例如 Kotlin 和 Scala。根据我使用 Kotlin 的短暂经验,我发现它是一种比 Java 更优雅的语言,但如果事先不了解 JVM 模型及其局限性,就很难理解 Kotlin 的设计决策或它“幕后”的工作方式。
  • 使用历史悠久的大数据工具,例如 Spark、Hadoop 或 Neo4j。尽管自 2010 年中期以来,该领域越来越多地转向 Python,但仍有大量生产 Java 代码需要有人维护。
  • 与 C 族语言的风格相似。与直接跳入 C++ 相比,Java 可以更直观地介绍 C 风格语言。不过,现在如果这是您的目标,我会考虑学习 C# 而不是 Java。
  • 与一些 Javascript 方言的连续性。特别是,React 代码体现了受 Java 实践影响的面向对象设计约定,而这些设计选择反过来又影响了 JS 规范的变化。熟悉 Java 约定有助于理解这些设计模式。它还可以帮助您识别哪些面向对象的做法是坏主意,因此您可以在 Javascript 应用程序中避免它们。

在我看来,自 2006 年左右以来,人们放弃 Java 有很多充分的理由:

  • 它非常冗长,并且需要大量有关实现细节的深奥知识才能编写高效运行的代码。这是 Scala 和 Kotlin 等语言在各自领域试图解决的问题,同时保留与 JVM 平台的兼容性以便于迁移。
  • 传统上,JVM 平台会在资源使用和集成复杂性方面带来大量开销。随着时间的推移,JVM 变得更加高效,并且已经开发出了将 Java 直接编译为本机代码的工具,但在我看来,集成复杂性仍然是一个重大瓶颈。特别是在 Android 上,经常需要从 JVM 代码中调用本机函数,这仍然是一个痛点。
  • 自 Sun 被 Oracle 收购以来,方法和政策发生了变化。这与许可问题(参见 Oracle v Google)以及功能蔓延有关,后者导致了跨代码库的兼容性问题。它还导致专有和开源 JVM 实现之间的生态系统破裂,从而影响性能。
  • 2000 年代和 2010 年代出现了可行的替代语言。
  • 新技术的出现是为了解决 Java 旨在解决的兼容性问题。Java 和 JVM 模型的一个关键“卖点”是能够在各种平台上运行相同的代码。但如今,这个目标更常见的是通过在虚拟机、后端系统的 Docker 容器中或通过浏览器中的 Web Assembly 运行代码来实现。

这很讽刺,因为 Java 的座右铭曾经是“一次编写,到处运行”,但事情就是这样。

(编辑,2023 年 6 月:感谢下面的评论者指出了这个答案中的一些缺陷并澄清了我的一些误解。我更新了文本以反映其中的一些反馈,例如删除无关的旁白,以及让整体基调更加平易近人。)

  • 这是一个非常无知的答案,出自一个显然不是 Java 开发人员的人之手。您显然不了解现代 Java 平台或其范围。此外,Codename One 将 Java 编译为本机 iOS 机器代码,就像 Swift 一样,因此您的大部分论点完全被排除在外。现代 Java 版本包含与 Scala 和 Swift 相同的功能。后者编写起来比 Java 麻烦得多,并且肯定不会帮助您编写跨平台应用程序。 (2认同)

Den*_*off 5

是的你可以。

用于此目的的一种工具是 Codename One。 https://www.codenameone.com/

另外,有关此主题的更多信息,请随时查阅此主题: How can one development iPhone apps in Java?