2

我只想保留java util、和包io,并想从我的 JDK 中删除所有其他包,例如和其他包。niomathjava.sql

我怎样才能删除它们?

  • 因此,如果我编写一些导入已删除包的程序,它将给出错误包不存在。
4

3 回答 3

2

使用 SecurityManager 而不是破解 JDK

于 2013-03-10T15:35:17.477 回答
2

我会尽我所能给你最好的答案。

为什么你真的不应该做你想做的事


当您编写代码时,通常同意以可扩展的方式开发代码。也就是说,您的代码可以很容易地插入到其他应用程序中,或者可以很容易地对其进行更改和添加。现在牢记这一原则,让我们回顾一下当您删除程序的可能功能时会发生什么。假设您删除了 SQL 包,并且在将来,您希望后端数据库在您的程序中提供一些持久性。你完蛋了。

Java 的理念,事实上我会说 Java 的主要优势,是它的通用性、一致性和模式的标准化。吸气剂始终是吸气剂。变量(不是常量)以小写字母开头。类具有标准化的结构化方式。所有这些都让 Java 开发变得非常直观。

JDK 是这种一致性的一部分,编辑它是真正影响 Java 的主要观点之一。听起来你想用一种不同的、更紧凑的语言来实现你的程序。

最后,您不知道客户将来可能希望如何扩展您的项目。如果您想从客户那里获得一些可重复的业务,并同时产生良好的声誉,那么您希望在设计代码时考虑到良好的设计实践。

于 2013-03-10T15:35:43.983 回答
0
  1. 没有这样的工具,AFAIK。
  2. 从 Java 库中删除东西在技术上可能很棘手,因为很难知道您的代码是否可能直接或间接使用某些类或方法。
  3. 如果您在 JRE 安装程序中添加或删除类并将其发送给其他人,则可能存在“许可问题”。

关于您提出的用例。

  1. 如果您将其构建为 Web 应用程序,那么您将很难删除不需要的类。一个典型的 webapp 服务器端框架使用大量的 Java SE 接口。
  2. 如果您接受并运行代码,某人想尝试降低您的服务,他们可以在不使用Object类的情况下完成。(提示:无限循环并填充堆。)在您的服务器上运行不受信任的代码是一个坏主意。时期。
  3. 想想有人试图在你的服务器上运行合法代码的后果。为什么不允许他们使用库类/方法?(如果我不能使用“普通”库类,我肯定会有点生气......)

我的建议是重新考虑实施这样的服务是否是一个好主意……考虑到风险,以及如果你的保障措施无效可能会遇到的困难。如果您决定继续,我建议在 JVM 中的安全框中运行不受信任的代码。作为第二层防御,以防 Java 安全受到威胁,我建议在一个隔离的虚拟机中运行“chrooted”服务,或者更好的是,如果遇到问题可以关闭该虚拟机。

于 2013-03-10T15:39:41.187 回答