`
Tristan_S
  • 浏览: 363409 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

类文件结构 等

 
阅读更多
代码编译的结果从本地机器码转变为字节码, 是存储格式发展的一小步,却是编程语言发展的一大步。


----类文件结构-------
java虚拟机不止能执行java程序,还可以运行groovy,jruby,jython等,只要这些语言的编译器可以把程序编译成class文件就ok。

有一些java语言本身无法有效支持的语言特性并不代表字节码本身无法有效支持, 这也为其他语言实现一些有别于java的语言特性提供了基础。

class文件是一组以8位字节为基础单位的二进制流。

每个class文件的头4个字节为魔数,以确定是否能被虚拟机接受,而不是用扩展名来判断。 CAFEBABY.

class文件可以用UE打开,查看其十六进制和其对应的ASCII码。(二进制看的不够直观),


----虚拟机类加载机制------
加载--> 连接(验证,准备,解析) --> 初始化 --> 使用 --> 卸载  共7个阶段

加载完成3件事
1, 获取二进制流
2, 转换成方法区的运行时数据结构
3, 在java堆中生成一个代表这个类的对象,作为方法区这些数据的访问入口

初始化的时机
1, new
2, 反射
3, 父类
4, main方法的类

类加载器使用的领域
类层次划分(tomcat), OSGi, 热部署, 代码加密


双亲委派
启动类 --> 扩展类 --应用程序类
保护应用程序类不会破坏上层的类

-----虚拟机字节码执行引擎-------


-----类加载及执行子系统的案例-----
Tomcat
/common  服务器和应用共享
/server  服务器独占
/shared  应用共享
/WebApp/WEB-INF  各个应用独占的
每个JSP文件对应一个jsp类加载器(HotSwap功能)

OSGi








分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics