社区
Java SE
帖子详情
如何替换JDK本身的部分API?如非公开类以及JRE本身的部分DLL
dawn023
2009-05-20 04:17:06
如题。
我知道可以替换JDK/JRE中的部分类或DLL,但是存在部署的问题。总不能每次部署都带着个自己的JRE吧。而且这也存在授权问题。
...全文
208
9
打赏
收藏
如何替换JDK本身的部分API?如非公开类以及JRE本身的部分DLL
如题。 我知道可以替换JDK/JRE中的部分类或DLL,但是存在部署的问题。总不能每次部署都带着个自己的JRE吧。而且这也存在授权问题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
树成
2009-05-22
打赏
举报
回复
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下的东西。
dawn023
2009-05-22
打赏
举报
回复
谢谢大家的建议。
但是有时确实需要概念JDK本身的实现,比如有些是JDK本身的BUG,因此也就别无选择了。但是修改或替换JRE的组件对部署有很大影响,因此不是一个很好的解决方案。
请大家集思广益,看看有什么更好的方法。
主要目标是:
1、修改JDK本身的部分API的实现(不多,很多是在基础上修改或改进),有些是核心包,有些是非公开的。
2、修改JDK的一些DLL的实现。
laorer
2009-05-21
打赏
举报
回复
能不能自定义启动环境,即另写一个 bat 文件来启动你的应用程序,然后再这个文件中设置 classpath, 指你自己的相关的库文件
树成
2009-05-21
打赏
举报
回复
其实你既然已经替换掉jdk或者jre中的dll,那就不存在通用性了,每次部署你都必须带着自己的jre,这是肯定的。
就算不带自己的jre,那你也要带着那些替换的内容,其实还没有直接带着自己的jre方便了。
还有,不要随随便便更换掉java核心包中的内容,否则这样的代码特性就只能运用于你自己的jre中了,而且启动类加载器不能加载java.包下面自定义的任何类,不过你可以自己实现自定义的ClassLoader。
xlongbuilder
2009-05-21
打赏
举报
回复
我想你可以这样做
你既然要替换类,那么你就要先找的你自己定义的类,后找到jre的包,哪这个只能有classloader 来做,简单的不需要. 比如你拷贝下String 的源码自己定义一个类java.lang.String,会先找这个类的.
dll 这个不好说,不过貌似也是可以的.
dawn023
2009-05-21
打赏
举报
回复
[Quote=引用 3 楼 xlongbuilder 的回复:]
jdk 有个ext 下面可以放一些包
可以替换的
另外 重定义classloader 貌似也可以实现
[/Quote]
这和我说的是一样有部署的问题,至于重定义classloader如何做,才能达到这个目的呢?
还有什么其他方法吗?
xlongbuilder
2009-05-20
打赏
举报
回复
jdk 有个ext 下面可以放一些包
可以替换的
另外 重定义classloader 貌似也可以实现
yanhan0615
2009-05-20
打赏
举报
回复
你都要自己定制了,当然要带着环境到处跑啊。。。
可以想想有没有别的解决方案而不用修改公用api的,否则只能带着跑
marcblue
2009-05-20
打赏
举报
回复
学习~
Windouws 64 位Tomcat7.0.40 + 64位
jdk
1.7.0u21 绿色版.part1
Windouws 64 位Tomcat7.0.40 + 64位
jdk
1.7.0u21 绿色版 part1 纯绿色,官方下载,绝对可用~ 欢迎评论吐槽~ 文件 PATH 列表 │ LICENSE │ NOTICE │ RELEASE-NOTES │ RUNNING.txt │ ├─bin │ bootstrap.jar │ catalina-tasks.xml │ catalina.bat │ catalina.sh │ commons-daemon-native.tar.gz │ commons-daemon.jar │ configtest.bat │ configtest.sh │ cpappend.bat │ daemon.sh │ digest.bat │ digest.sh │ service.bat │ setclasspath.bat │ setclasspath.sh │ shutdown.bat │ shutdown.sh │ startup.bat │ startup.sh │ tcnative-1.
dll
│ tomcat-juli.jar │ tomcat-native.tar.gz │ tomcat7.exe │ tomcat7w.exe │ tool-wrapper.bat │ tool-wrapper.sh │ version.bat │ version.sh │ ├─conf │ │ catalina.policy │ │ catalina.properties │ │ context.xml │ │ context.xml.bak │ │ logging.properties │ │ server.xml │ │ server.xml.bak │ │ tomcat-users.xml │ │ web.xml │ │ │ └─Catalina │ └─localhost ├─
jdk
1.7.0_21 │ │ COPYRIGHT │ │ LICENSE │ │ README.html │ │ release │ │ src.zip │ │ THIRDPARTYLICENSEREADME-JAVAFX.txt │ │ THIRDPARTYLICENSEREADME.txt │ │ │ ├─bin │ │ appletviewer.exe │ │ apt.exe │ │ extcheck.exe │ │ idlj.exe │ │ jabswitch.exe │ │ jar.exe │ │ jarsigner.exe │ │ java-rmi.exe │ │ java.exe │ │ javac.exe │ │ javadoc.exe │ │ javafxpackager.exe │ │ javah.exe │ │ javap.exe │ │ javaw.exe │ │ javaws.exe │ │ jcmd.exe │ │ jconsole.exe │ │ jdb.exe │ │ jhat.exe │ │ jinfo.exe │ │ jli.
dll
│ │ jmap.exe │ │ jps.exe │ │ jrunscript.exe │ │ jsadebugd.exe │ │ jstack.exe │ │ jstat.exe │ │ jstatd.exe │ │ jvisualvm.exe │ │ keytool.exe │ │ kinit.exe │ │ klist.exe │ │ ktab.exe │ │ msvcr100.
dll
│ │ native2ascii.exe │ │ orbd.exe │ │ pack200.exe │ │ policy
java短信开发包
1. slf4j-
api
-1.5.2.jar slf4j-
api
-1.5.2-sources.jar slf4j-nop-1.5.2.jar comm.jar smsserver-3.4.1.jar smslib-3.4.1.jar 将上述6个jar包拷贝到lib下 2. 将javax.comm.properties拷贝到\
jdk
1.5.0\
jre
下 将win32com.
dll
拷贝到\
jdk
1.5.0\
jre
\bin下 3. pci接口安装drive 准备工作做好了。
jdk
和
jre
有什么区别?
JDK
与
JRE
在安装的过程中各位可能注意到了
JRE
这个名词,下面我们来聊聊
JDK
和
JRE
的关系和区别。
JDK
:它是Java开发运行环境,在程序员的电脑上当然要安装
JDK
;
JRE
:Java Runtime Environment它是Java运行环境,如果你不需要开发只需要运行Java程序,那么你可以安装
JRE
。例如程序员开发出的程序最终卖给了用户,用户不用开发,只需要运行程序,所以用户...
JRE
和
JDK
的区别
1.定义
JRE
(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了
JRE
,那么你的系统只能运行Java程序。
JRE
是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心
类
库。它包括Java虚拟机、Java平台核心
类
和支持文件。它不包含开发工具(编译器、调试器等)。
JDK
(Java Develo...
java
jre
与
jdk
的区别_学习java却不知道
JRE
和
JDK
的区别?看完这篇文章,让你受益匪浅...
JRE
和
JDK
的区别?1.
JRE
是Java运行时环境 。 它是运行已编译的Java程序所需的所有程序的包,包括Java虚拟机(JVM),Java
类
库, java命令和其他基础结构。 但是,它不能用于创建新程序。
JDK
是Java Development Kit ,这是Java的全功能SDK。 它具有
JRE
拥有的所有内容,还具有编译器( javac )和工具(如javadoc和jdb )。 它能够创建...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章