Java可执行JAR?轻松反编译?

Java可执行JAR?轻松反编译?,java,Java,我最近开始使用Java,除了变量、逻辑运算符、循环之类的东西外,我还使用了JFrames,我想到了几个问题 我注意到,通过将我的程序保存为一个可执行jar 程序似乎是1个文件。那意味着你什么时候去 开发一个将使用许多资源(图像、音频)的东西 文件等)它们将全部存储在这个jar文件中吗 我注意到的第二件事是,我可以相当容易地提取jar文件并反编译.class文件。考虑到这一点,假设我使用一个MySQL数据库,要连接到MySQL服务器,我必须使用JDBC驱动程序,我必须这样做吗?硬编码密码 Ja

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

  • 我注意到,通过将我的程序保存为一个
    可执行jar
    程序似乎是1个文件。那意味着你什么时候去 开发一个将使用许多资源(图像、音频)的东西 文件等)它们将全部存储在这个jar文件中吗

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

  • Java
    是否适合3D游戏?我离这真的很远,但请告诉我。我看到了用
    Java
    3D游戏引擎编写的游戏,比如
    jMonkeyEngine
    ,我印象深刻,但我读了一些帖子,说
    Java
    速度慢,不太适合
    3D
    游戏,这让我有点困惑

  • 这是一种选择。这当然不是强制性的,您也可以从外部文件加载资源

  • 没错。此类应用程序的通用体系结构是将应用程序服务器置于客户端和实际数据库之间。您控制的应用程序服务器知道数据库密码。它只向客户机公开他们应该被允许执行的操作

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

  • 是的,你可以把所有的东西都放在一个罐子里
  • 是的,但无论如何,让不受信任的用户原始访问数据库并不是一个好主意。更好的方法是使用公共API构建服务器应用程序并对用户进行身份验证
  • 视情况而定。如果你想编写一个专注于丰富、高质量图形效果的3d应用程序,Java可能不是最好的选择。然而,Java中的3d非常简单,而且非常高级,因此与其他低级技术相比,您可以节省大量的开发时间
  • 如果你愿意,你可以这样做。在Oracle的Java教程中,您可以阅读有关创建可执行JAR文件的内容:

  • 用任何语言编写的任何程序都可以进行反向工程,因此无论它是否是Java,都不应该硬编码密码。有了Java字节码,反编译就相当容易了

  • <> L>>P> 10多年前,java还很年轻,它与C++、C++等直接编译成本机代码的语言相比,相对较慢。然而,java虚拟机在过去的几年中取得了很多进展,java程序的性能在很多情况下都与C++相比。那些仍然抱怨Java速度慢的人不是最新的,或者对Java没有太多的经验。Java确实足够快,正如您在使用jMonkeyEngine的演示中看到的那样。然而,对于商业3D图形游戏,C++似乎是传统的事实上的编程语言。请注意,要压缩硬件的最后一点性能,您需要专门为该硬件编写代码。Java不是实现这一点的合适工具,因为它被设计成独立于平台的


    永远不要硬编码密码。也不要公开数据库。游戏示例:Minecraft是用java编写的。如果你只是在学习java基础知识,并且正在担心3D编程、捆绑和其他主题,那么你就会患上动脉瘤。首先要坚持学习基础知识。一旦你对此感到满意,就转到更高级的话题。如果你为3D游戏设计的最终目标而担心时间投入,那就别担心了。您将学到可移植到C/C++或其他编程语言的宝贵技能。@booleanCube是真的,但它比许多其他游戏运行得慢,至少在我的计算机上是这样。Java在Java虚拟机上运行,使其独立于平台。这增加了它的可移植性,但也增加了执行图形操作时的开销。它可以像@booleanCube在Minecraft上的例子一样实现,但是它的性能不会比其他语言更高,因为其他语言更注重性能,而不注重可移植性。使用LWJGL的游戏可以轻松地将GPU推向极限,因为它允许通过Java访问OpenGL。Minecraft使用LWJGL btw。谢谢!回答得好!