Java Hour 57 Java Architecture
Java 的架构中有4个重要的组成部分:
1 Java programming langrage
2 Java class file format
3 Java API
4 Java virtual machine

Java 之所以能所谓的跨平台,主要就在于不同的Java Platform.

Java 虚拟机
最基本的JVM 可以描述为一个class loader 和一个执行引擎。
额外的,JVM 还包含一个调用native method 的功能,这个native 方法的调用是依赖于操作系统的。
class loader
类型加载器分为引导类型加载器和用户自定义类型加载器.
一个简单的动态扩展的例子就是浏览器. 浏览器通过一个用户自定义类型加载load applets 的class 文件。
这个加载器一般叫做 applet class loader. 而applet 就是动态扩展的很好的例子,引导类型装载器并不知道你将会需要载入什么类,这些applet 需要的类是由用户自定义类型装载器动态载入的。
Java Class File
Java class 文件是一个二进制文件,能够被JVM 识别而不依赖于特定平台的文件。这些都是废话,一般c, c++ 编译出来就是直接可执行文件,知道这个不同就够了。
另外一个常见的依赖就是cpu 处理器依赖。一般字节的存储有大小端的区别,这个问题在Java Class File 里面也解决了,基本不用关心。
The Java API
Java API 是平台依赖的,正是因为Java API 的存在,Java 程序才可以不依赖于平台。
很多native 方法都是Java API 帮你调用了,所以你的Java 可以是平台无关的。

The Java 编程语言
Java 语言的特色
1 面向对象
2 多线程
3 结构化异常处理
4 GC
5 动态链接
6 动态扩展
Java 架构中的弊端
相比较一些native 的语言,java 性能偏低,特别是语言刚开始的时候。现在随着虚拟机技术的发展,Java 的性能也大大的提升了。
因为jvm 的不确定性,很多问题都会有。
这里具体不细化,关于java 的弊端自然有很多人会提到。
结论
总之,Java 的架构可以提高生产率,在某些领域确实有很大的市场和发展空间。
本帖来自:http://www.cnblogs.com/bnbqian/
Java Hour 57 Java Architecture的更多相关文章
- Java SE、Java EE、Java ME
Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程序.J ...
- [java基础知识]java安装步骤
jre: java运行环境. jre = java虚拟机 + 核心类库(辅助java虚拟机运行的文件).如果只是运行java程序,只需要安装jre. jdk: java开发工具集 jd ...
- 重拾java系列一java基础(1)
前言,不知不觉,从接触java到工作至今已有两年的时间,突然感觉自己的基础知识还很薄弱,有些知识虽然知道,但是停留在表面上,没有深挖,或者实践过,感觉掌握的很肤浅,而且时间一长,就觉得忘记了,我觉得这 ...
- hive运行query语句时提示错误:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.io.IOException:
hive> select product_id, track_time from trackinfo limit 5; Total MapReduce jobs = 1 Launching Jo ...
- Learning Java 8 Syntax (Java in a Nutshell 6th)
Java is using Unicode set Java is case sensitive Comments, C/C++ style abstract, const, final, int, ...
- 浅谈Java SE、Java EE、Java ME三者的区别
本文把JAVA SE.JAVA EE.JAVA ME拿来做下区别,同时也分享一下作者的一些成果.目前的Java平台根据软件开发人员.服务提供商和设备生产商可以针对特定的市场可以分为三个版本JAVA S ...
- 执行Hive出现Error running child : java.lang.OutOfMemoryError: Java heap space错误
具体错误日志如下: 2018-05-11 15:16:49,429 FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running chi ...
- Java学习笔记 -- Java定时调度工具Timer类
1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...
- 【java编程】java中什么是bridge method(桥接方法)
https://blog.csdn.net/mhmyqn/article/details/47342577 https://www.cnblogs.com/strinkbug/p/5019453.ht ...
随机推荐
- ThinkPHP中initialize和construct的不同
ThinkPHP中initialize()和construct()这两个函数都可以理解为构造函数,前面一个是tp框架独有的,后面的是php构造函数,那么这两个有什么不同呢? 在网上搜索,很多答案是两者 ...
- 锋利的jQuery-4--动画方法总结简表
- IIS短文件名泄露漏洞危害及防范方法
危害级别:轻微 IIS短文件名泄露漏洞 WASC Threat Classification 描述: Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件 ...
- ios开发@selector的函数如何传参数/如何传递多个参数
不同的类会有不同的传递方式,参数名也不尽相同.如果是传单个参数的就不用集合,如果是传多个参数可以用类似nsarray,nsdictionary之类的集合传递.看下面例子: 例子1: 通过NSTimer ...
- PHP 500 -Invalid command RewriteEngine的解决
转自:http://blog.csdn.net/wang02011/article/details/8205903 环境: wampserver-2.1a 系统 : win8 错误 : 500 ...
- 使用mysql服务来记录用户的反馈
经过前几篇教程的学习,相信你对于微信的操作与SAE和webpy都有了些了解,那么这次我想加一个功能,通过mysql来记录用户的反馈,如用户输入fk+内容,然后通过一个页面来显示,最终的效果如下 htt ...
- js实现table排序-sortable.js
方案一.引用sortable.js包 /* <th class="thcss" style="width: 40px;" onclick="so ...
- Server Application Unavailable出现的原因及解决方案集锦
iis ServerAppl 共存 应用程序池 站点 在Asp.net站点中经常出现这种提示 Server Application Unavailable The web application y ...
- ReactiveCocoa入门教程:第一部分
http://www.cocoachina.com/ios/20150123/10994.html 本文翻译自RayWenderlich,原文:ReactiveCocoa Tutorial--The ...
- Boltzmann机
博客园不能上传附件,所以这里贴两张流程图吧.一个是模拟退火算法的流程图(Boltzmann机本实上就是反复退火的过程), 个是Boltzmann调整权值的过程.