当前位置: 首页 > 面试题库 >

在Objective-C Mac应用程序中使用Java库,然后将该应用程序放在Mac App Store中

鲁向明
2023-03-14
问题内容

我已经研究了一段时间了,但是还没有一个明确的答案。我正在编写一个Mac OSX应用程序,最终打算将其放置在应用程序商店中,尽管我将能够在Objective-
C中编写大多数应用程序,但是我确实需要从仅在Java中可用的库中调用方法。我有两个问题:

  1. 根据我的阅读,似乎JNI(使用Invocation API)是执行此操作的唯一可接受的方法(即使Apple在Mac应用程序中已弃用Java,但实际上并不能接受)。还有其他方法吗?

  2. 我已经读到Apple不允许Mac App Store上使用Java应用程序,但是它会允许使用JNI的本地化应用程序包含一些Java类吗?由于可以使用JNI将Java VM与应用程序“打包”在一起,因此看来苹果将来停止在OSX中包含Java似乎不是问题。

您的见解将不胜感激。谢谢。


问题答案:

@Andrew-简而言之,如果您所做的非常简单(并且不涉及使用java.awt或java.swing的库),那么GCJ / could
/就可以了。我真的不会推荐它。我之所以这样说,是因为GCJ不支持“许多”
/“较新”的Java功能,除非您的Java代码是针对较旧版本的JDK编写的,否则您将遇到编译问题。如果您使用外部第3方部门编译(例如eclipse.anything等)进行编译,您将遇到巨大的麻烦。

我假设您有已经用Java编写的代码,并且想要将该代码作为服务来使用更好(和本机)的objc
UI。如果真是这样,那么说实话,我想您会发现很多成功,而头痛,只是为服务层创建一个objc代码库:(

当然,可以选择将本机mac ui用作基于云的分布式服务层(用Java
ofc编写)的瘦客户端。但是我不确定苹果如何看待瘦客户端在其应用商店中基于Web的服务。



 类似资料:
  • 一些DDD书籍如[1]指出,尽管我们有一个域模型,但我们可以有几个应用程序服务层(有些使用术语服务层)。这是由于应用程序层是应用程序的特定UI到域模型和基础结构层之间的接口,因此,如果我们有多个用户界面与后端一起工作,可能会有多个应用程序服务层。这一点向我提出了一个问题,即在哪里定位应用程序层。 我正在用。NET C#创建一个应用程序。整个应用程序位于一个解决方案中,其中UI(我们有三个不同的wi

  • 我尝试在JAVA代码中调用MessageBoxA函数。以下方法有什么问题,以至于我的程序抛出了很多错误? 1-st: run:线程“main”java.lang.ClassFormatError:java.lang.ClassLoader的类文件加载/库/MessageBox中的本机或抽象方法中的代码属性。java.lang.ClassLoader.defineClass(ClassLoader.

  • 我试图理解我们什么时候需要使用这个应用程序。在我们的node Express中使用 当我在网上搜索时,我在reddit上偶然发现了这个答案,它说明了应用程序之间的区别。获取和应用程序。使用 在此基础上,我总结了以下几点。 充当超级路由或中间件?这意味着它在? 此外,如果有人能添加更多关于app.use.的信息/练习,我将不胜感激

  • 我不知道如何用GraalVM的SDK编译我的Java应用程序。我相信在使用GraalVMbinary时,默认情况下会将它们添加到类路径中。 我的hello world测试应用程序: 输出: 我使用的是用OpenJDK 11构建的GraalVM二进制文件: 当深入挖掘时,我发现这些类包含在其中。jmod档案位于:

  • 问题内容: 首先,我知道如何构建Java应用程序。但是我总是对在哪里上课感到困惑。支持以严格面向领域的方式组织软件包的支持者,其他支持者则按层分开。 我本人一直有问题 命名, 放置 所以, 您将域特定的常量放在哪里(以及此类的最佳名称是什么)? 您在哪里放置基础结构和领域特定的东西的类(例如,我有一个FileStorageStrategy类,该文件将文件存储在数据库中,或者存储在数据库中)? 在哪

  • 问题内容: 我正在为我的游戏创建一个关卡编辑器,但在将LwjglCanvas与JFrame一起使用时遇到了问题。我使用JFrame(而不是LwjglFrame)来保持引擎和关卡编辑器尽可能独立。我有两个JAR:WorldEditor.jar和GameEngine.jar。在WorldEditor内部,我有一个名为“测试”的按钮,该按钮假设是将GameEngine.jar(如果尚未加载)加载并将其启