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. python多线程备份MYSQL数据库并删除旧的备份。

    #!/usr/bin/python # -*- coding=utf-8 -*- import time import os import datetime import threading from ...

  2. 一机双mysql的安装和启动注意事项目

    ./configure --prefix=/usr/local/mysql5.1/ --with-mysqld-user=mysql --sysconfdir=/usr/local/mysql5.1/ ...

  3. html中input输入框屏蔽鼠标右键

    <label> <input id="ckdestinationId" type="text" oncontextmenu="ret ...

  4. VSS - 版本管理起的学习 AND 使用

    局域网中用VSS.适用于Team级还可以,企业级不好,仅支持Windows 操作系统. Visual SourceSafe 是一个源代码控制系统,可以保存文件的不同版本,可以比较文件的差别,可以控制不 ...

  5. 【风雪之隅】写在PHP7发布之际一些话 2015-12-02

    做开源也有4,5年的时间了,从最初的 Yaf,到今天的 PHP7,我参与的项目越来越多,使用我代码的用户也越来越多,明天就要发布的PHP7,绝对是我从事开源以来的一个最重要里程碑,我应该纪念一下今天, ...

  6. Java Session 介绍;

    为什么需要Session 这是为了填补 Http 协议的局限,当用户去访问一个页面,服务端返回完了请求(如,你访问完一个网页,这个页面将页面内容,界面UI呈现给你),就算是结束了,就断开了,服务端不再 ...

  7. [Effective JavaScript 笔记]第5章:数组和字典--个人总结

    前言 这节里其实一直都在讨论对象这个在js中的万能的数据结构.对象可以表式为多种的形式,表示为字典和数组之间的区别.更多的我觉得这章讨论多的是一些对应实现功能的相关操作,有可能出现的bug以及如何避免 ...

  8. 第18章 使用MariaDB数据库管理系统

    章节概述: MYSQL数据库管理系统被Oracle公司收购后从开源换向到了封闭,导致包括红帽在内的许多Linux发行版选择了MariaDB. 本章节将教会您使用mariaDB数据库管理工具来管理数据库 ...

  9. Linux下更好用的帮助命令—cheat

    导读 Linux系统中,我们经常会用man命令来帮助查看这个命令的具体用法,man是很强大的,但是英语不好的同学用man用起来可能不那么顺手,自然而然的就出现了cheat命令,cheat命令就是通过简 ...

  10. [BZOJ1067][SCOI2007]降雨量

    [BZOJ1067][SCOI2007]降雨量 试题描述 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格 ...