如何替换JDK本身的部分API?如非公开类以及JRE本身的部分DLL
如题。
我知道可以替换JDK/JRE中的部分类或DLL,但是存在部署的问题。总不能每次部署都带着个自己的JRE吧。而且这也存在授权问题。
------解决方案--------------------学习~
------解决方案--------------------你都要自己定制了,当然要带着环境到处跑啊。。。
可以想想有没有别的解决方案而不用修改公用api的,否则只能带着跑
------解决方案--------------------jdk 有个ext 下面可以放一些包
可以替换的
另外 重定义classloader 貌似也可以实现
------解决方案--------------------我想你可以这样做
你既然要替换类,那么你就要先找的你自己定义的类,后找到jre的包,哪这个只能有classloader 来做,简单的不需要. 比如你拷贝下String 的源码自己定义一个类java.lang.String,会先找这个类的.
dll 这个不好说,不过貌似也是可以的.
------解决方案--------------------能不能自定义启动环境,即另写一个 bat 文件来启动你的应用程序,然后再这个文件中设置 classpath, 指你自己的相关的库文件
------解决方案--------------------
1、根本没有必要修改jdk本身的实现,如果你觉得jdk自带api实现不好,完全可以自己实现,例如对zip的处理,java api就实现得不好,对中文处理只能用utf-8格式。但是不等于替换掉java的api。
2、dll实现。你也可以自己用jni实现,例如磁盘读写等等,但是实现似乎也没有必要非要替换掉jdk下的那些dll,完全可以放在自己的程序目录下。
如果你觉得sun的jdk本身有很多你无法接受,或者影响到你系统实现,且无法用自己的代码来解决的bug,例如java在内存处理上的问题,或者虚拟机在某些环境下无法正常运行,你可以将环境描述以及bug描述发到sun官方,如果你迫切急需改掉虚拟机固有bug,在短时间内是无法完成的,因为需要自己开发java虚拟机。但是这些是属于java虚拟机的bug和不适应性,如果仅仅是api调用的功能缺陷,你完全可以自己去实现的,但是绝对不要替换掉jdk下的东西。