Java四大核心技术思想详解

合集下载

java四大名著

java四大名著

1. 《Java编程思想(第4版)》基本信息原书名:Thinking in Java (4th Edition)原出版社:Prentice Hall PTR作者:(美)Bruce Eckel [作译者介绍]译者:陈昊鹏丛书名:计算机科学丛书出版社:机械工业出版社ISBN:9787111213826上架时间:2007-6-19出版日期:2007年6月推荐语本书是全球程序员必备图书《Java编程思想》的最新版本(《Java编程思想(英文影印版.第4版)》)本书曾获:·被china-pub会员评为“2007年我最喜爱的十大技术图书”之一·2003年《Software Development》杂志最佳书籍Jolt大奖·2003年《Java Developer’s Journal》读者选择最佳书籍奖·2001年《Java World》编辑选择最佳书籍奖·2000年《Java World》读者选择最佳书籍奖·1999年《Software Development》杂志最佳产品奖·1998年《Java Developer’s Journal》编辑选择最佳书籍奖内容简介本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在bruce eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。

从java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。

从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。

本书的作者拥有多年教学经验,对c、c++以及java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。

本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、java i/o系统、枚举类型、并发以及图形化用户界面等内容。

基础学java

基础学java

基础学javaJava,是一门面向对象的、直译式计算机编程语言,由Sun Microsystems公司于1995年5月推出,是一种高级编程语言。

它使得开发者能够以更加简单和高效的方式来创建客户端,服务器端以及嵌入式应用程序。

Java拥有许多强大的性质,使它比其他编程语言更具优势。

在学习Java之前,首先了解Java的基本概念以及其工作原理。

Java属于一种具有跨平台性能的编程语言,因此可以在操作系统上运行。

Java具有许多优点,如可移植性,安全性,多线程支持,持久性,可重新使用性等。

此外,Java还拥有许多强大的类库,可帮助程序员更快速地开发软件,而不需要编写多余的代码。

学习Java的首要步骤是要熟悉Java编程语言的基本知识。

像所有的编程语言一样,Java也有许多基本概念,如变量、数据类型、类、接口、程序流程和处理等。

为了学习它们,必须先了解Java的编译器,它可以把Java代码转换成机器语言,因此我们可以在机器上执行它。

另外,Java的基本思想之一就是封装,即将复杂性封装起来,使开发者不需要担心底层实现即可使用它。

封装也可以让开发者在编程过程中更加有效率,减少重复性工作。

此外,封装还可以帮助开发者保护他们的程序逻辑,从而更加安全。

接下来,开发者应当学习Java的基本技术,以及熟悉Java的API(应用程序编程接口)。

API可以帮助开发者更有效地创建软件,因为它可以帮助开发者实现特定的功能,同时也可以帮助开发者降低软件的开发成本。

学习Java也应该涉及到框架,它是用于让开发者更轻松地开发软件的工具。

Java框架可以帮助开发者提高开发效率,减少重复性工作,它同时还能确保代码的可重用性和可维护性。

框架还可以帮助开发者更好地利用Java API,它们的组合可以帮助开发者更轻松地创建软件。

最后,Java的文档是一个必不可少的学习资源,它可以帮助开发者更有效地学习技术。

它包括Java概念,参考文档,实例和解决方案。

面向对象程序设计Java课程介绍PPT课件

面向对象程序设计Java课程介绍PPT课件

面向对象编程
深入探讨类、对象、封装、继承和多 态等面向对象的核心概念,以及如何 使用Java进行面向对象编程。
异常处理与调试
掌握Java中的异常处理机制,学习如 何进行程序调试和错误处理。
Java语言的发展趋势与未来展望
云计算与微服务
随着云计算技术的不断发展,Java在 构建微服务架构方面将发挥越来越重
随着软件工程领域的发展,面向对象程序设计思想逐渐 成为主流,掌握面向对象编程技术对于提高软件质量和 开发效率具有重要意义。
课程目标
掌握Java语言基础语 法和面向对象编程思 想,包括类、对象、 封装、继承、多态等
核心概念。
熟悉常用Java类库和 API,了解Java集合框 架、输入输出流、多
线程等技术。
Java提供了wait()和notify()方法来实 现线程间通信,其中wait()方法使当 前线程等待某个条件成立,notify()方 法则通知等待的线程继续执行。
05
Java应用实例
图形用户界面设计
总结词
通过使用Java的图形用户界面(GUI)工具包,如Swing和JavaFX,学生将学习如何创建具有 吸引力和功能丰富的用户界面。
自定义异常
Java允许自定义异常类,通过继承Exception或RuntimeException类来实现。自定义异常可以在程序中 根据需要创建和抛出。
文件I/O操作
文件读取
使用Java的FileInputStream 和BufferedReader类可以读
取文本文件的内容,其中 FileInputStream用于打开文 件,BufferedReader用于逐
循环语句
循环语句用于重复执行一段代码。Java中的循环 语句包括for循环、while循环和do-while循环等。

java培训总结范文8篇

java培训总结范文8篇

java培训总结范文8篇篇1Java培训总结报告一、培训背景与目的随着信息技术的飞速发展,Java作为一种流行的编程语言,广泛应用于各个领域。

为了提高自身的编程技能,更好地适应市场需求,我参加了本次Java培训课程。

本次培训旨在帮助学员系统掌握Java语言的核心知识,熟悉相关技术和工具的应用,以便能够在实际项目开发中灵活运用。

二、培训内容本次Java培训为期一个月,主要涵盖了以下内容:1. Java语言基础:包括变量、数据类型、运算符、流程控制等基础知识。

2. 面向对象编程:详细介绍了Java的面向对象特性,如类与对象、继承、封装和多态。

3. 常用API使用:讲解了Java标准库中的常用类和方法,如字符串处理、日期时间处理、文件操作等。

4. 异常处理与集合类:学习了Java中的异常处理机制以及集合类的使用方法。

5. 多线程编程:掌握了Java中实现多线程的多种方式以及线程间的同步与通信。

6. 网络编程与数据库连接:学习了Java网络编程基础以及使用JDBC连接数据库的方法。

7. 框架技术:介绍了流行的Java开发框架,如Spring、Hibernate等,并进行了实践操作。

三、培训过程与体会在培训过程中,我深感自己收获颇丰。

1. 系统学习:培训课程安排合理,内容从基础到高级,循序渐进,有助于学员系统掌握Java知识。

2. 实战演练:培训过程中不仅有理论知识的学习,还有大量的实战演练,通过项目实践加深了对知识的理解和运用。

3. 互动交流:培训过程中,学员之间互相交流,共同探讨问题,增进了彼此的了解和友谊,也提高了自己的学习能力。

4. 答疑解惑:培训老师耐心解答学员的疑问,对于难以理解的知识点进行了深入讲解,使我对Java编程有了更深入的了解。

四、培训收获与提升通过本次培训,我在Java编程方面取得了显著的进步:1. 掌握了Java语言的核心知识,能够熟练编写基本的Java程序。

2. 了解了Java开发的相关技术和工具,如版本控制工具Git、集成开发环境Eclipse等。

Java基础知识点归纳

Java基础知识点归纳

Java基础知识点归纳Java基础学问点归纳对于刚刚接触Java的人,java基础学问技术点繁多,那么yjbys我为大家汇总最全java学问点如下,仅供大家参考学习!1. JVM相关(包括了各个版本的特性)对于刚刚接触Java的人来说,JVM相关的学问不愿定需要理解很深,对此里面的概念有一些简洁的了解即可。

不过对于一个有着3年以上Java阅历的资深开发者来说,不会JVM几乎是不行接受的。

JVM作为java运行的基础,很难信任对于JVM一点都不了解的人可以把java 语言吃得很透。

我在面试有超过3年Java阅历的开发者的时候,JVM几乎就是一个必问的问题了。

当然JVM不是唯一确定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。

在JVM这个大类中,我认为需要把握的学问有:JVM内存模型和结构GC原理,性能调优调优:Thread Dump,分析内存结构class 二进制字节码结构,class loader 体系,class加载过程,实例创建过程方法执行过程:Java各个大版本更新提供的新特性(需要简洁了解)2. Java的运行(基础必备)这条可能出看很简洁,java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。

这个学问点是最最基本的java开发者需要把握的,初学java,第一个确定是教你如何在指令行中执行java程序,但是很多人一旦把java学完了,IDE用上了,就把这个都忘了。

为什么强调要知道这个呢,知道了java最纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的名目多少,执行命名如何,参数如何,是否有缺失等。

这样有利于你真正开发中去解决那些奇诧异怪的可能和环境相关的问题。

在这里需要把握的学问有:javac 编译java文件为class 文件java 指令的使用,带package的java类如何在指令行中启动java程序涉及到的各个路径(classpath,java。

Java编程语言的基本概念和应用

Java编程语言的基本概念和应用

Java编程语言的基本概念和应用一、概述Java作为一种跨平台的高级语言,在当今软件开发行业具有广泛的应用。

它被广泛应用于企业级应用开发、Web开发、移动应用开发、大数据处理、人工智能等领域。

本文将从Java编程语言的基本概念、语言特性和其应用方面来进行阐述。

二、基本概念1. Java发展历史Java是由Sun Microsystems公司于1995年推出的一种面向对象的编程语言。

最初在设计上它的目标就是为了用来开发嵌入式系统。

随着互联网的快速发展以及Sun公司自身的努力,在Web开发、企业级应用开发等领域得到了广泛应用。

2009年,Sun公司被Oracle公司收购,Java也成为了Oracle公司旗下的一个产品。

2. Java虚拟机Java虚拟机(JVM)是Java的核心,它是Java语言的运行环境。

Java虚拟机的作用是将编写的Java程序转化为字节码并执行。

Java语言通过JVM实现了跨平台,即一份程序或者一个库可以在多个平台上运行,而不需要针对每个平台分别进行编译和打包。

3. Java程序结构Java程序的基本结构包括:(1). Package(包):Java程序一般都是从一个包开始的,每个包下面又可以包含多个类。

包的作用是为了防止不同包下的类名重名,同时也可以方便地进行分类管理。

(2). Class(类):Java中的所有代码都要写在class中,一个Java程序中可以有多个class。

(3). Method(方法):方法是Java中功能最基本的单元,一个Java程序可以由多个方法组成。

在方法中可以定义变量、控制语句、循环语句等。

(4). Statement(语句):Java中的语句有很多种,包括赋值语句、控制语句、循环语句、异常处理语句等。

4. Java数据类型Java数据类型分为基本数据类型和引用数据类型。

基本数据类型包括:byte、short、int、long、float、double、boolean和char等8种类型。

java教程

java教程

最新Java电子书(2008.12.3更新)(下载地址:)JAVA参考大全.J2SE.5EDITION(世界级程序设计大师作品)Thinking in Java第三版+第四版(中文版+习题答案)Java数据库高级编程宝典Java核心技术第八版(core java 8th)Java程序设计基础教程Java distribute computing 15天学会jQuery J2EE课程设计指导JMS简明教程JDK1.6 API中文版(CHM格式) JDK 1.4 TutorialJDK6.0 中文文档Java Foundation Classes in a Nutshell《Java Servlet编程(第二版)》英文版Java Script 高端程序设计(精华) 《Java EE编程技术》源代码和课件java核心技术编程第8版Practical DWR 2 Projects Java网络编程学习资料Java线程入门Java数据库应用程序编程指南Spring基础教程构建J2EE应用程序Java深度历险EJB3.0实例教程AJAX In Action(中文版)Java文档五百篇spring框架,技术详解及使用指导JAVA2核心技术第1卷.基础知识Java高级开发指南《Tomcat权威指南》英文版《JSP设计(第三版)》英文版Java完美编程(第三版) ExtJS 2.0实用简明教程struts2+sping2.0+hibernate3.0 Thinking In Java 4th Spring Framework 开发参考手册Java For Dummies 4e2008新书_JavaScript and Ajax Tools for..Cutting Edge Java Game Programming Java程序设计EJB.XML与数据库Java技术教程.基础篇+源代码java案例开发集锦Java程序设计大学教程试读+课件基于AppFuse框架的B2C电子商务系统研究与实现Professional Ruby on Rails 2008 Swing Extreme Testing用Java设计文本编辑器MiniEditor Effective Java, 2nd Edition(新版) Java2 Api大全完整版(上)Java语言程序设计-计算机与信息技术专业应用教材EJB 3 Developer Guide2008深入浅出Software Development软件开发更多Java电子书(2008.6.1前更新) (下载地址:)Struts 2 in Action Java Look And Feel Design Guidelines Advanced TopicsJava CAPS Basics_ Implementing Common EAIPatternsWeb Service Patterns_ Java EditionJAVA框架核心技术代码J2EE开发全程实录Head First 设计模式J2ME Game Programming Ajax经典实例大全JAVA API官方文档中文版Dynamic Productivity for the Java DeveloperThe Art of Java 中文版JAVA框架核心技术笔记Java Swing, 2nd Edition Java编程精选集锦(附源代码)征服Ajax-Web 2.0快速入门与项目实践高级java2 大学教程(含源码) Java就业培训教程java编程思想第四版Java,XML和Web服务宝典Java5.0 Tiger程序高手秘笈框架参考文档Java.Web开发详解.书中例子的源代码数据结构与算法分析(Java版英文)轻量级 J2EE 企业应用实战: 整合开发C#.NET编程-NHibernate资料整合J2EE性能测试More.Java.Pitfalls中文版J2EE1.4编程指南J2EE应用与BEA.WebLogic.Server第2版循序渐进Java 2教程Webwork in action中英文版(附带源代码) jboss rules 用户指南(中文)jBPM中文用户指南J2ME开发大全(中英文版)Java信息管理系统开发实例导航Java面向对象程序设计(清华版)Ajax The Complete ReferenceService Oriented Java Business Integration Java线程高清晰中文第二版深入体验JAVA Web开发内幕——核心基础Java编程高手J2ME开发大全J2ME移动设备程序设计精通J2ME无线编程Practical Apache Struts 2 Web 2.0Projects分析模式可复用的对象模型(中文版) JavaSpaces程序设计Pragmatic Programmer (July 2005) Herb Schildt's Java Programming Cookbook Tomcat. The Definitive Guide, 2nd Edition Pragmatic Programmer (July 2005) Herb Schildt's Java Programming Cookbook Tomcat. The Definitive Guide, 2nd EditionBusiness Process Management with J Boss jBPM Java网络程序设计OSWorkflow.A.Guide.for.Java.Developers.and.ArchitectsEJB3.0入门图文教程精通spring - Mastering Spring struts入门与实践ajax on java 2007 Dynamic data structure analysis and Practical Java Game ProgrammingMyEclipse 6 Java EE 开发中文手册Special Edition Using Enterprise JavaBeans 2.0Java and XML(英文第三版)From Java to C# A Developer's Gui de 自己动手写开发工具--基于Eclipse的工具开发Java蓝牙开发(英文版)Wicked Cool Java 零基础学Java Web开发电子教程零基础学Java 电子教程J2EE OA 项目开发日记JavaCard应用程序开发深入Java Servlet网络编程更多Java电子书(2008.1.1前更新) (下载地址:)Java应用程序开发LINUX平台JDBC问题解决的方法actionscript 3.0语言和组件参考Java Jsp EJB Spring学习eclipse插件开发第二版(英文版) Java2网络协议技术内幕(附源码)JAVA编程模式与范例Java.Servlets.编程指南Java数据结构和算法中文第二版java编程艺术java2入门经典Eclipse ME 中文文档ant工具使用Teach Yourself Java in 21 Days J2EE1.4编程指南-中文版Core Java应用程序设计教程Java案例开发:项目开发风暴Java黑客大曝光_开发安全的Java应用程序Java测试与设计.从单元测试到自动Web测试JAVA认证考试指南(第2版) Java Rules中文版Eclipse精要与高级开发技术Java.bug模式详解Jakarta Commons Cookbook使用Java技术的XML高级开发JXTA-Java P2P网络编程技术Ruby之路JDK6API中文参考手册java网页开发的艺术Spring专业开发指南(中文)java上机实践指导教程Java P2P技术内幕企业级Java安全性(构建安全的J2EE应用) 设计模式:Java语言中的应用JAVA优化编程Java信息系统设计与开发实例(第二版)Java网络高级编程Java 2精要:语言详解与编程指南Java与XML数据绑定Java面向对象程序设计教程精通HibernateJava对象持久化技术详解JavaScript与HTML实用教程深入学习:JFC SWING—JAVA基础类组件Java咖啡馆Java技术实用教程Java Struts教程JAVA软件架构设计模式SUN公司的java实例手册精通Struts基于MVC的Java Web设计与开发征服Ajax java案例开发hibernate 参考指南java编程思想(中英文版加源代码) Jbuilder.X.实用技术手册Spring Framework 中文参考手册Java2实用教程电子教案精通Spring开发专家之Sun ONEJava.Web应用开发.J2EE和Tomcat第2版Java数据库系统项目开发实践Java与UML协同应用开发J2EE开发技术手册Eclipse从入门到精通JDK1.5的泛型实现Java数据结构上机实践指导教程JBuilder 8 基础编程良葛格Java JDK 5.0学习笔记java面向对象应用程序开发Java 程序设计实训教程Java网络编程与分布式计算Java实效编程百例JBuilder 7编程实作指南Java面向对象教程应用软件工程原理编程Struts in Action 中文修正版J2ME开发环境搭建JAVA API1.5中文文档JAVA清华大学教程JAVA 入门视频教程Java语言程序设计教程精通Java Swing程序设计JAVA程序员必读基础篇java核心技术卷JavaGUI程序设计Java泛型技术之发展Java学习材料(499篇文章)JavaMail开发手册EJB技术及应用(课件与练习)J2ME慢慢学教程J2EE指南中文版Java VRML 设计大全J2EE 经典实例详解Java实用程序设计100例Java实用系统开发指南Java新手上路Flash教程java环境安装配置(下载地址:)Tomcat配置方法JAVA配置文件编写说明文档一步一步学会配置Kjava开发环境Weblogic7开发EJB的配置图解JSP环境安装配置全程指导Linux下JAVA环境配置学习方法(下载地址:)通过JB4学习JAVA10步学习 JavaScript Java Sctipt学习不求人J2EE学习资料JAVA学习文档J2EE学习笔记JavaScript学习Java2 学习指南Juniper学习指南java面向对象编程(下载地址:)Java面向对象编程指南JAVA的核心技术:面向对象编程Java 与 UML 面向对象程序设计Java 2 编程21天自学通J2EE编程起步Java2编程详解Java专业编程指南Java服务器高级编程J2EE EAI编程指南J2MEMIDP无线设备编程指南JAVA编程思想中文版Java XML编程指南Java 数据库编程宝典JAVA的核心技术:面向对象编程JDBC API数据库编程实作教材核心 JSF 编程JAVA2 应用编程150例JAVA数据库编程JDBC深入掌握J2EE编程技术实用J2EE设计模式编程指南Java for Internet编程技术Java安全性编程指南J2ME无线设备编程J2EE EJB编程实例Java编程思想第三版Java 极限编程java网络编程(下载地址:)J2EE网络编程标准教程Java网络编程实例Java P2P网络编程技术Java网络编程网络编程基础篇之 Java Script Solaris Shell 编程SUN Solaris管理手册Solaris性能管理Solaris9安装指南SOLARIS高级系统管理员指南Solaris操作环境安全Solaris GNOME2.0桌面用户指南Solaris 9 12/03 安装指南Solaris管理员指南中文Solaris9 系统管理员指南Solaris安全性专题指导JBuilder开发Servlet及JSP(下载地址:)精通JBuilder JBuilder速成资料Jbuilder7和weblogic7整合开发手JBUILDER9 软件开发项目实践JbuilderX开发指南Jbuilder x 指南JBuilder4开发人员指南JBuilder开发数据库应用程序Java开发指南--Servlets和JSP篇Java Servlets 编程指南Oreilly Java Servlet Java Servlet开发与实例深入Java Servlet 网络编程Java Servlet帮助文档用JSP_Servlet构建三层式管理信息系统JSP网站编程教程JSP语法分析JSP实用教程JSP语法(1)--HTML注释JSP应用开发详解JSP技术揭秘JSP技术大全JSP网上书店实例详解JSP动态网页新技术JSP 技术大全JSP高级开发与应用JSP 完全探索JSP编程技巧JSP速成教程JSP网络编程技术JSP程序设计指南最新JSP入门与应用JSP快速入门JSP网页编程JSP 实用教程JSP入门与提高JSP语法掌握自定义JSP标签JSP 动态网站技术入门与提高如何成为优秀的JSP 程序员JSP教程之与数据库通信JSP数据库编程指南JSP 高级编程JSP实用编程实例集锦JSP程序设计精彩实例JSP即时应用JSP程序设计精彩实例XML系列\JDBC\JDO\Struts\Hibernate\(下载地址:)Java程序设计EJB、XML与数据库XML 终极教程Java&XML应用XML_JAVA指南JDBC API数据库编程实作教材JAVA数据库编程JDBCJDBC API 参考教程第三版JDBC与Java数据库程序设计Java语言SQL接口 JDBCprogramJSP应用程序开发指南用 JDBC 管理数据库连接全面了解JDO数据库编程Struts中文手册Struts架构指导精通struts技术JAVA与模式\J2EE模式\Eclipse开发(下载地址:)J2EE 核心模式Java 企业设计模式Java简单工厂创立性模式介绍EJB设计模式JAVA设计模式实用J2EE设计模式编程指南Java与模式设计模式Java版J2EE Jboss Ejb With Eclipse 2003 JAVA视频下载(下载地址:)。

java 技术栈 描述

java 技术栈 描述

java 技术栈描述Java技术栈作为当前软件开发领域的重要技能组合,为广大开发者提供了强大的工具和框架。

本文将为您详细描述Java技术栈的相关内容,帮助您更好地理解和掌握这一技术体系。

一、Java技术栈概述Java技术栈是指使用Java编程语言进行软件开发时所涉及的一系列技术、工具和框架。

它涵盖了Java语言本身以及与之相关的各种库、框架、数据库、中间件等。

Java技术栈具有跨平台、高性能、安全稳定等优势,被广泛应用于企业级应用、大数据、云计算、Android开发等领域。

二、Java技术栈核心组成部分1.Java语言:Java技术栈的基础,提供了面向对象编程、泛型、异常处理、多线程等核心特性。

2.Java虚拟机(JVM):Java程序运行的环境,负责加载和执行Java字节码,实现跨平台运行。

3.核心库:Java API,提供了丰富的数据结构、算法、I/O操作、网络编程等功能。

4.开发工具:Eclipse、IntelliJ IDEA等集成开发环境,以及Maven、Gradle等构建工具。

5.框架:Spring、Hibernate、MyBatis等主流框架,简化开发过程,提高开发效率。

6.数据库:MySQL、Oracle、PostgreSQL等关系型数据库,以及MongoDB、Redis等NoSQL数据库。

7.中间件:Tomcat、Jetty等Web服务器,以及RabbitMQ、Kafka等消息中间件。

8.大数据技术:Hadoop、Spark、Flink等大数据处理框架,以及HBase、Cassandra等分布式数据库。

9.云计算:Spring Cloud、Dubbo等微服务框架,以及AWS、阿里云等云平台。

三、Java技术栈的优势与应用1.跨平台:Java技术栈具有跨平台的特性,可以在Windows、Linux、Mac OS等操作系统上运行,降低了开发成本和运维难度。

2.丰富的生态:Java技术栈拥有丰富的开源库、框架和工具,为开发者提供了强大的支持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java四大核心技术思想详解
Java已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的掌握Java 技术,深入理解底层的技术处理细节必不可少。

对核心概念和思想的掌握可以帮助我们举一反三、触类旁通,有助于提升我们对整个Java平台的理解力。

这里所介绍的是Java技术平台的几个核心概念,其中所蕴含的思想有助于我们更深刻的理解Java技术。

Java虚拟机
Java虚拟机的主要任务是装在class文件并且执行其中的字节码。

Java虚拟机包含一个类装载器,它可以从程序和API中装载class文件。

Java API中只有程序执行时需要的那些类才会被装载。

字节码由执行引擎来执行。

不同的Java虚拟机中,执行引擎可能实现得非常不同。

在由软件实现的虚拟机中,最简单的执行引擎就是一次性解释字节码。

另一种执行引擎更快,但是也更消耗内存,叫做"即时编译器(just-in-time compiler)"。

在这种情况下,第一次被执行的字节码会被编译成本地机器代码。

编译出的本地机器代码会被缓存,当方法以后被调用的时候可以重用。

第三种执行引擎是自适应优化器。

在这种方法里,虚拟机开始的时候解释字节码,但是会监视运行中程序的活动,并且记录下使用最频繁的代码段。

程序运行的时候,虚拟机只把那些活动最频繁的代码编译成本地代码,其他的代码由于使用得不是很频繁,继续保留为字节码-由虚拟机继续解释它们。

一个自适应的优化器可以使得Java虚拟机在80%~90%的时间里执行被优化过的本地代码,而只需要编译10%~20%的对性能有影响的代码。

当Java虚拟机是由主机操作系统上的软件实现的时候,Java程序通过调用本地方法(native method)和主机交互。

Java中有两种方法:Java方法和本地方法。

Java方法是由Java 语言编写,编译成字节码文件,存储在class文件中的。

本地方法是由其他语言(比如c,c++或汇编语言)编写的,编译成何处理器相关的机器代码。

本地方法保存在动态链接库中,格式是各个平台专有的。

运行中Java程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,并调用这个方法。

本地方法是联系Java程序和底层主机操作系统的连接方法。

通过本地方法,Java程序可以直接访问底层操作系统的资源。

一个本地方法接口(Java Native Interface,JNI)-使得本地方法可以在特定主机系统的任何一个Java平台实现上运行。

如果希望使用特定主机上的资源,它们又无法从Java API访问,那么可以写一个平台相关的Java程序来调用本地方法。

如果希望保证程序的平台无关性,那么只能通过Java API 来访问底层系统资源。

类装载器的体系结构
一个Java应用程序可以使用两种类装载器:"启动(bootstrap)"类装载器和用户定义的类装载器。

启动类装载器(这是系统中唯一的)是Java虚拟机实现的一部分。

启动类装载器通常使用某种默认方式从本地磁盘中装载类,包括Java API类(启动类装载器也被称为原始类装载器、系统类装载器或者默认类装载器)。

Java应用程序能够在运行时安装用户定义的类装载器,这种类装载器能够使用自定义的方式来装载类。

例如,从网络下载class文件。

尽管启动类装载器是虚拟机实现的本质部分,而用户定义的类装载器不是,但用户定义的类装载器能够用Java来编写,能够被编译成class 文件,能够被虚拟机装载,还能够像其它对象一样实例化。

由于有用户定义类装载器,所以不必再编译的时候就知道运行中的Java应用程序中最终会加入的所有的类。

用户定义的类装载器使得在运行扩展Java应用程序成为可能。

当它运行时,应用程序能够解决它需要哪些额外的类,能够决定是使用一个或是更多的用户定义的类装载器来装载。

由于类装载器是用Java编写的,所以用任何在Java代码中可以表述的风格来进行类装载。

这些类可以通过网络下载,可以从某些数据库中获取,甚至可以动态生
成。

每一个类被装载的时候,Java虚拟机都监视这个类,看到它到底是被启动类装载器还是被用户定义类装载器装载。

当被装载的类引用了另外一个类时,虚拟机就会使用装载第一个类的类装载器装载引用的类。

例如,如果虚拟机使用一个特定的类装载器装载Volcano这个类,它就会使用这个类装载器装载Volcano类使用的所有类。

由于Java虚拟机采取这种方式进行类的装载,所以被装载的类默认情况下只能看到被同一个类装载器装载的别的类。

通过这种方法,Java的体系结构允许在一个Java应用程序中建立多个命名空间。

运行时的Java程序中的每一个类装载器都有自己的命名空间。

Java应用程序可以创建多少个(或多少种)被不同的类装载器装载的类存放在不同的命名空间中,它们不能相互访问,除非应用程序显示地允许这么做。

当编写一个Java应用程序的时候,从不同源文件装载的类可以分隔在不同的命名空间中。

通过这种方法,就能够使用Java类装载器的体系结构来控制任何不同源文件中装载的代码之间的相互影响,特别是能够阻止恶意代码获取访问或破坏善意代码的权限。

Web浏览器是一个动态扩展的例子,Web浏览器使用用户定义的类装载器从网络下载用于Java applet的class文件。

Web浏览器使用一个用来安装用户定义类装载器的Java应用程序。

这个用户定义的类装载器通常被称为Java Applet类装载器,它知道如何向HTTP服务器请求class文件。

Java Applet可以作为动态扩展的例子,因为Java应用程序并不知道它什么时候会开始从网络下载浏览器请求的class文件。

只有当浏览器遇到有Java applet的页面时,才决定是否需要下载class文件。

Web浏览器启动的Java应用程序通常为每个提供class文件的网络地址分别创建不同的用户定义类装载器,因此,不同的用户定义类装载器装载不同来源的class文件。

这就可以把它们分别放置在Java主机应用程序的不同命名空间之下。

由于不同来源的Java applet文件放置在不同的命名空间中,恶意的Java applet代码就不会直接访问从别的地方下载的class 文件。

这就能够限制或阻止不同来源的代码之间的相互访问。

Java class文件
Java class文件主要在平台无关性和网络移动性方面使Java更适合网络。

它在平台无关性方面的任务是:为Java程序提供独立于底层主机平台的二进制形式的服务。

这种途径途径打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。

通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。

而Java class文件时可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。

当编译和连接一个C++程序时,所获得的可执行二进制文件只能在指定的硬件平台和操作系统上运行,因为这个二进制文件包含了对目标处理器的机器语言。

而Java编译器把Java 源文件的指令翻译成字节码,这种字节码就是Java虚拟机的"机器语言"。

class文件设计得紧凑,因此它们可以快速地在网络上传送。

其次,由于Java程序是动态连接和动态扩展的,class文件可以在需要的时候才下载。

这个特点使得Java应用程序能够安排从网络上下载class文件的时间,从而可以最大限度地减少终端用户的等待时间。

Java API
Java API通过支持平台无关性和安全性,使得Java适应于网络应用。

Java API是运行库的集合,它提供了一套访问主机系统资源的标准方法。

运行Java程序时,虚拟机装载程序的class文件所使用的Java API class文件。

所有被装载的class文件(包括从应用程序中和从Java API中提取的)和所有已经装载的动态库(包含本地方法)共同组成了再Java虚拟机上运行的整个程序。

在一个平台能偶支持Java程序以前,必须在这个特定平台上明确地实现API的功能。

为访问主机上的本地资源,Java API调用了本地方法。

由于Java API class文件调用了本地方法,Java程序就不需要再调用它们了。

通过这种方法,Java API class文件为底层主机提供了具有平台无关性、标准接口的Java程序。

对Java程序而言,无论平台内部如何,Java API 都会有同样的表现和可预测的行为。

正是由于在每个特定的主机平台上明确地实现了Java 虚拟机和Java API,因此,Java程序自身就能够成为具有平台无关性的程序。

Java API在Java安全性模型方面也有贡献。

当Java API的方法进行任何有潜在危险的操作(比如进行本地磁盘写操作)之前,都会通过查询访问控制器来检验是否得到了授权。

访问控制器是一个类,该类用来执行栈检验,已决定是否允许某种操作。

相关文档
最新文档