6

我最近开始使用 Java,除了变量、逻辑运算符、循环和类似的东西,我还玩过 JFrames,我想到了几个问题。

  1. 我注意到通过将我的程序保存为executable jar程序似乎是 1 个文件。这是否意味着当你要开发一个将使用许多资源(图像、音频文件等)的东西时,它们都将存储在这个 jar 文件中?

  2. 我注意到的第二件事是我可以相当容易地提取jar文件和反编译文件。.class考虑到这一点,假设我使用MySQL数据库并连接到MySQL服务器,我必须使用JDBC驱动程序来完成它,我必须吗?硬编码密码?

  3. Java适合3D游戏吗?我真的离这很远,但请告诉我。Java我看到使用3D 游戏引擎编写的游戏jMonkeyEngine,我印象深刻,但我红色(阅读)帖子Java很慢,不适合3D游戏,这让我有点困惑。

4

3 回答 3

6
  1. 如果你愿意,你可以这样做。在 Oracle 的 Java 教程中,您可以阅读有关创建可执行 JAR 文件的信息:在 JAR 文件中打包程序

  2. 用任何语言编写的任何类型的程序都可以进行逆向工程,因此无论它是否是 Java,您都不应该对密码进行硬编码。使用 Java 字节码很容易反编译。

  3. 10 多年前,Java 还很年轻的时候,与 C 或 C++ 等直接编译为本机代码的语言相比,它的速度相对较慢。但是,Java 虚拟机这些年来取得了许多进步,Java 程序的性能在很多情况下可以与 C++ 媲美。仍然抱怨 Java 速度慢的人不是最新的,或者没有很多当前的 Java 经验。正如您从 jMonkeyEngine 的演示中看到的那样,Java 确实足够快。然而,对于商业 3D 图形游戏,C++ 似乎是使用的传统编程语言。请注意,要从硬件中榨取最后一点性能,您需要专门为该硬件编写代码。Java 不是用于此目的的正确工具,因为它被设计为独立于平台的。

于 2013-07-19T20:33:47.433 回答
2
  1. 那是一种选择。这当然不是强制性的,您也可以从外部文件加载资源。

  2. 确实如此。这种应用程序的常见架构是将应用程序服务器放置在客户端和实际数据库之间。您控制的应用程序服务器知道数据库密码。它只向客户端公开他们应该被允许执行的操作。

  3. Minecraft 是用 java 编写的,所以是 QED。用 Java 编写的游戏不太可能突破现代 GPU 性能的极限,但这并不是每款游戏的目标。

于 2013-07-19T20:29:37.043 回答
2
  1. 是的,你可以把所有东西都放在一个罐子里
  2. 是的,但是让不受信任的用户对数据库的原始访问权无论如何都不是一个好主意。更好的方法是使用公共 API 构建服务器应用程序并验证用户。
  3. 这取决于。如果你想编写一个专注于丰富、高质量图形效果的 3d 应用程序,那么 Java 可能不是最佳选择。然而,Java 中的 3d 很简单,而且非常高级,因此与其他较低级别的技术相比,您可以节省大量的开发时间。
于 2013-07-19T20:32:54.377 回答