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的更多相关文章

  1. Java SE、Java EE、Java ME

    Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程序.J ...

  2. [java基础知识]java安装步骤

    jre:  java运行环境.  jre =  java虚拟机 + 核心类库(辅助java虚拟机运行的文件).如果只是运行java程序,只需要安装jre.    jdk: java开发工具集   jd ...

  3. 重拾java系列一java基础(1)

    前言,不知不觉,从接触java到工作至今已有两年的时间,突然感觉自己的基础知识还很薄弱,有些知识虽然知道,但是停留在表面上,没有深挖,或者实践过,感觉掌握的很肤浅,而且时间一长,就觉得忘记了,我觉得这 ...

  4. 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 ...

  5. 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, ...

  6. 浅谈Java SE、Java EE、Java ME三者的区别

    本文把JAVA SE.JAVA EE.JAVA ME拿来做下区别,同时也分享一下作者的一些成果.目前的Java平台根据软件开发人员.服务提供商和设备生产商可以针对特定的市场可以分为三个版本JAVA S ...

  7. 执行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 ...

  8. Java学习笔记 -- Java定时调度工具Timer类

    1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...

  9. 【java编程】java中什么是bridge method(桥接方法)

    https://blog.csdn.net/mhmyqn/article/details/47342577 https://www.cnblogs.com/strinkbug/p/5019453.ht ...

随机推荐

  1. Nginx Http框架的理解

    Nginx Http框架的理解 HTTP框架是Nginx基础框架的一部分,Nginx的其它底层框架如master-worker进程模型.event模块.mail 模块等. HTTP框架代码主要有2个模 ...

  2. c/s架构nginx+php-fpm通信原理

        FastCGI是一个运用于Http Server和动态脚本语言间通信的接口,多数流行的Http Server都支持FastCGI,包括Apache.Nginx和lighttpd等.同时,Fas ...

  3. struts2 访问国际化资源 <s:text>作为属性

    保留全局级国际化信息资源文件.并在message.properteis中增加一个带有参数的国际化信息. labela = labela in zh_CN labelb = labelb,{0} < ...

  4. 统一软件开发过程(rup)理解

    不好意思,没有内容,请看百科吧http://baike.baidu.com/link?url=-zXA6oXiHRts5Z1THGzie7seH-YRigfiR7KRppP6TYcnnb7_Bxc_f ...

  5. @suppressWarnings解释

    J2SE 提供的最后一个批注是 @SuppressWarnings.该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默. 一点背景:J2SE 5.0 为 Java 语言增加 ...

  6. linux下的视频音频播放器终极解决方案

    要使用(启用)rpmfusion, 一定要先启用enable epel包: Important notes You need to enable EPEL on RHEL 5 & 6 or c ...

  7. [整理]Code::Blocks使用遇到的问题

    在使用其编写C小程序的过程总会遇到些问题,特整理如下: 1.无法调试 注意的是项目所在的文件路径不能包含中文. 2.头文件接口函数申明引用无效 查看头文件是否处于可编译状态,左侧项目文件列表里是文件名 ...

  8. Altera的几个常用的Synthesis attributes

    各厂商综合工具,对HDL综合时都定义了一些综合属性这些属性可指定a declaration,a module item,a statement, or a port connection 不同的综合方 ...

  9. 使用Unity创造动态的2D水体效果

    者:Alex Rose 在本篇教程中,我们将使用简单的物理机制模拟一个动态的2D水体.我们将使用一个线性渲染器.网格渲染器,触发器以及粒子的混合体来创造这一水体效果,最终得到可运用于你下款游戏的水纹和 ...

  10. UIView 设置背景图片

    http://blog.csdn.net/qijianli/article/details/7777268 项目中,可能需要我们为某个视图设置背景图片,而API中UIView没有设置背景图片的方法,那 ...