《Java从小白到大牛精简版》之第1章 开篇综述

2024-04-17 14:32

本文主要是介绍《Java从小白到大牛精简版》之第1章 开篇综述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Java从小白到大牛》纸质版已经上架了!!!
Java从小白到大牛书皮

Java诞生到现在已经有20多年了,但是Java仍然是非常热门的编程语言之一,很多平台中使用Java开发。表1-1所示的是TIOBE社区发布的2016年5月和2017年5月的编程语言排行榜,可见Java语言的热度,或许这也是很多人选择学习Java的主要原因。

表 1-1 TIOBE编程语言排行榜

2017年5月2016年5月变化编程语言评级评级变化
11Java14.639%-6.320%
22C7.002%-6.220%
33C++4.751%-1.950%
45Python3.548%-0.240%
54C#3.457%-1.020%
610Visual Basic .NET3.391%1.070%
77JavaScript3.071%0.730%
812Assembly language2.859%0.980%
96PHP2.693%-0.300%
109Perl2.602%0.280%
118Ruby2.429%0.090%
1213Visual Basic2.347%0.520%
1315Swift2.274%0.680%
1416R2.192%0.860%
1514Objective-C2.101%0.500%
1642Go2.080%1.830%
1718MATLAB2.063%0.780%
1811Delphi/Object Pascal2.038%0.030%
1919PL/SQL1.676%0.470%
2022Scratch1.668%0.740%

1.1 Java语言历史

在正式学习Java语言之前,读者有必要先来了解一下Java的历史。1990年底美国Sun公司1成立了一个叫做Green的项目组,该Green项目主要目标是为消费类电子产品开发一种分布式系统,使之能够操控电冰箱、电视机等家用电器。

消费类电子产品种类很多,包括掌上电脑(个人数字助理,Personal Digital Assistant,简称PDA)、机顶盒、手机等等,这些消费类电子产品所采用的处理芯片和操作系统基本上都是不相同的,存在跨平台等问题。开始Green项目组考虑采用C++语言来编写消费类电子产品的应用程序,但是C++语言过于复杂、庞大,而且安全性差。于是他们设计并开发出一种新的语言——Oak(橡树)。Oak这个名字来源于Green项目组办公室窗外的一棵橡树。由于Oak在进行注册商标时已经被注册,他们需要为这个新语言取一个新的名字,有一天,几位项目的成员正在咖啡馆喝着Java(爪哇)咖啡,其中一个人灵机一动说就叫Java怎么样?马上得到了其他人的同意,于是这个新的语言取名为Java。

Sun在1996年发布了Java 1.0,但是Java 1.0开发的应用速度很慢,并不适合做真正的应用开发,直到Java 1.1后速度有了明显的提升。Java设计之初是为消费类电子产品开发应用,但是真正使Java流行起来是在互联网上的Web应用程序,上个世纪90年代正在互联网发展起步阶段,互联网上设备差别很大,需要应用程序能够跨平台运行,那么Java语言具有“一经编写到处运行”的跨平台能力。

到本书编写时,Oracle公司已经发布了Java 8,Java 9将在2017年秋季发布。Java

在20多年发展过程中,与时俱进,为了适应时代的需要,经历过两次重大的版本升级,一个是Java 5,Java 5提供了泛型等重要的功能;另一个是Java 8,Java 8中提供了Lambda表达式和枚举类等重要的功能。

1.2 Java语言特点

Java语言能够流行起来,并长久不衰,得益于Java语言有很多优秀的关键特点。这些特点包括:简单、面向对象、分布式、结构中立、可移植、解释执行、健壮、安全、高性能、多线程和动态。下面详细解释一下:

1. 简单

Java设计目标之一就是能够方便学习,使用简单。由于当初C++程序员很多,介绍C++语言的书籍也很多,所以Java语言的风格设计成为类似于C++语言风格,但Java摒弃了C++中容易引发程序错误的地方,如指针、内存管理、运算符重载和多继承等。一方面C++程序员可以很快迁移到Java;另一方面没有编程经验的初学者也能很快学会Java。

2. 面向对象

面向对象是Java最重要的特性。Java是彻底的、纯粹的面向对象语言,在Java中“一切都是对象”。Java完全具有面向对象三个基本特性:封装、继承和多态,其中封装性实现了模块化和信息隐藏,继承性实现了代码的复用,用户可以建立自己的类库。而且Java采用的是相对简单的面向对象技术,去掉了多继承等复杂的概念,只支持单继承。

3. 分布式

Java语言就是为分布式系统而设计的。JDK(Java Development Kits,Java开发工具包)中包含了支持HTTP和FTP等基于TCP/IP协议的类库。Java程序可以凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。

4. 结构中立

Java程序需要在很多不同网络设备中运行,这些设备有很多不同类型的计算机和操作系统。为能够使Java程序能在网络的任何地方运行,Java编译器编译生成了与机器结构(CPU和操作系统)无关的字节码(byte-code)文件。任何种类的计算机,只要可以运行Java虚拟机,字节码文件就可以在该计算机上运行。

5. 可移植

体系结构的中立也使得Java程序具有可移植性。针对不同的CPU和操作系统Java虚拟机有不同的版本,这样就可以保证相同的Java字节码文件可以移植到多个不同的平台上运行。

6. 解释执行

为实现跨平台,Java设计成为解释执行的,即Java源代码文件首先被编译成为字节码文件,这些字节码本身包含了许多编译时生成的信息,在运行时候Java解释器负责将字节码文件解释成为特定的机器码进行运行。

7. 健壮

Java语言是强类型语言,它在编译时进行代码检查,使得很多错误能够在编译期被发现,不至于在运行期发生而导致系统崩溃。

Java摒弃了C++中指针操作,指针是一种很多强大的技术,能够直接访问内存单元,但同时也很复杂,如果指针操控不好,会引起导致内存分配错误、内存泄漏等问题。而Java中则不会出现由指针所导致的问题。

内存管理方面C/C++等语言采用手动分配和释放,经常会导致内存泄漏,从而导致系统崩溃。而Java 采用自动内存垃圾回收机制2,程序员不再需要管理内存,从而减少内存错误的发生,提高了程序的健壮性。

8. 安全

在Java程序执行过程中,类装载器负责将字节码文件加载到Java虚拟机中,这个过程中由字节码校验器检查代码中是否存在着非法操作。如果字节码校验器检验通过,由Java解释器负责把该字节码解释成为机器码进行执行,这种检查可以防止木马病毒。

另外。Java虚拟机采用的是“沙箱”运行模式,即把Java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间外的内存。

9. 高性能

Java编译器在编译时对字节码会进行一些优化,使之生成高质量的代码。Java字节码格式就是针对机器码转换而设计的,实际转换时相当简便。Java在解释运行时采用一种即时编译技术,可使Java程序的执行速度提升很大。多年的发展Java虚拟机也有很多改进这都使得Java程序的执行速度提升很大。

10. 多线程

Java是为网络编程而设计的,这要求Java能够并发处理多个任务。Java支持多线程编程,多线程机制可以实现并发处理多个任务,互不干涉,不会由于某一任务处于等待状态而影响了其它任务的执行,这样就可以容易的实现网络上的实时交互操作。

11. 动态

Java应用程序在运行过程中,可以动态的加载各种类库,即使是更新类库也不必重新编译使用这一类库的应用程序。这一特点使之非常适合于网络环境下运行,同时也非常有利于软件的开发。

1.3 Java平台

Java不仅是编程语言,还是一个开发平台,Sun公司根据Java应用领域的不同将Java分成三个平台:Java SE、Java EE和Java ME。

1.3.1 Java SE

Java SE是Java Standard Edition,主要目的是为台式机和工作站桌面应用(Application)程序的版本。Java SE是其他平台的基础,本书主要介绍的就是Java SE版本中的技术。

Java SE中主要包含了:JRE(Java SE Runtime Environment,Java SE运行环境)、JDK(Java Development Kit,Java开发工具包)和Java核心类库。如果只是运行Java程序,不考虑开发Java程序,那么只安装JRE就可以了。在JRE中包含了Java程序运行所需要的Java虚拟机(JVM,Java Virtual Machine)。JDK中包含了JRE和一些开发工具,这些工具包括:编译器、文档生成器和文件打包等工具。

另外,Java SE中还提供了Java应用程序开发需要的基本的和核心的类库,这些类库:字符串、集合、输入输出、网络通信和图形用户界面等。事实上学习Java就是在学习Java语法和Java类库使用。

1.3.2 Java EE

Java EE是Java Enterprise Edition,主要目的是为简化企业级系统的开发、部署和管理。Java EE是以Java SE为基础的,并提供了一套服务、API接口和协议,能够开发企业级分布式系统、Web应用程序和业务组件等,其中的包括:JSP、Servlet、EJB、JNI和Java Mail等。

1.3.3 Java ME

Java ME是Java Micro Edition,主要是面向消费类电子产品,为消费电子产品提供一个Java的运行平台,使得Java程序能够在手机、机顶盒、PDA等产品上运行。Java ME在早期的诺基亚塞班手机系统有很多应用,而现在的iOS和Android等智能手机中基本上没有它的用武之地。

1.4 Java虚拟机

Java应用程序能够跨平台运行,主要是通过Java虚拟机实现的。如图1-1所示,不同软硬件平台Java虚拟机是不同的,Java虚拟机往下是不同的操作系统和CPU,使用或开发时需要下载不同的JRE或JDK版本。Java虚拟机往上是Java应用程序,Java虚拟机屏蔽了不同软硬件平台,Java应用程序不需要修改,不需要重新编译直接可以在其他平台上运行。

图1-1 Java虚拟机

图1-1 Java虚拟机

Java虚拟机是中包含了Java解释器,Java程序在运行过程如图1-2所示,首先由编译器将加Java源程序文件(.java文件)编译成为字节码文件(.class文件),然后再由Java虚拟机中的解释器将字节码解释成为机器码去执行。

图1-2 Java程序运行过程

图1-2 Java程序运行过程

本章小结

本章首先介绍了解到Java的历史、Java语言的特点,然后介绍了Java三大平台,最后介绍了Java虚拟机。

配套视频

http://www.zhijieketang.com/classroom/6/courses

《Java从小白大牛》纸质版:

京东地址

《Java从小白大牛》电子版:

百度阅读地址


  1. Sun Microsystems公司创建于1982年,主要产品是工作站及服务器。1986年在美国成功上市,1992年Sun推出了市场上第一台多CPU台式机,1993年进入财富500强,1995年开发了Java语言,2010年被Oracle(甲骨文)公司收购。现在Java技术是由甲骨文公司提供的。 ↩
  2. 在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。 ↩

这篇关于《Java从小白到大牛精简版》之第1章 开篇综述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/912057

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定