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. Mac 鼠须管 合并词库 简单使用

    之前一直没用过合成词库这功能,有个同步用户数据的选项,点它后,生成一个文件夹,里面就有当前的一些配置,词库之类的 /Users/dfpo/Library/Rime/sync 这样我们就得到了一个装着用 ...

  2. 在64位windows 7上安装汇编调试工具debug.exe的方法

    最近我在研究汇编,书中介绍的调试工具还是基于WinXP 32bit时代中自带debug.exe进行调试,但是64bit的Windows XP.Vista.Win7.Win8都已经不自带这个工具了,网上 ...

  3. MySQL各版本的区别(转)

    MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本,开源免费, ...

  4. 转:Java NIO系列教程(五) 通道之间的数据传输

    在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel. transferFro ...

  5. jquery autocomplete 简单实用例子

    <link href="../../themes/default/css/jquery.ui.all.css" rel="stylesheet" type ...

  6. Dean Edwards大神写的addEvent库

    直接晒代码: // written by Dean Edwards, 2005 // with input from Tino Zijdel, Matthias Miller, Diego Perin ...

  7. thinkphp中F方法

    我们已经了解了ThinkPHP中的S方法的用法,F方法其实是S方法的一个子集功能,仅用于简单数据缓存,并且只能支持文件形式,不支持缓存有效期,因为采用的是PHP返回方式,所以其效率较S方法较高,因此我 ...

  8. 21个常用的PHP代码汇总

    PHP 是目前使用最广泛的基于 Web 的编程语言,驱动着数以百万计的网站,其中也包括如 Facebook 等一些大型站点.这里收集了 21个日常开发中实用便捷的 PHP 代码,希望可以对一些 PHP ...

  9. HDU 4858 项目管理(邻接表 暴力模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4858 我们建造了一个大项目!这个项目有n个节点,用很多边连接起来,并且这个项目是连通的! 两个节点间可 ...

  10. CUDA 6.5 && VS2013 && Win7:创建CUDA项目

    运行环境: Win7+VS2013+CUDA6.5 1.创建win32空项目 2.右键项目解决方案-->生成项目依赖项-->生成自定义 3.右键项目解决方案-->属性-->配置 ...