秦疆的JavaSE课程笔记:13-16 入门 上

13 入门 Java帝国的诞生

  • 1972年,C语言诞生
    优点:贴近硬件,运行极快,效率很高
    以C语言为基础开发:操作系统,编译器,数据库,网络系统
    两个枷锁:指针,内存管理
    指针很强大,能直接操作内存,但是C语言没有相应的工具去越界检查,新手容易犯错。
    内存管理问题在编译期间是发现不了的,只有到程序运行时才会突然暴露。
    导致大量的时间和精力被浪费在小心翼翼地处理指针跟内存分配上。
    C语言宣称是具有一致性的,一个机器上的代码在另一个机器上只需要编译就行了。
    但实际上,C语言要求使用一个标准函数库,针对每个平台都要写一份,小小的错误就会导致编译失败。

  • 1982年,C++诞生
    面向对象,兼容C语言,多了些静态内存检查
    在图形、游戏等领域有建树
    但C++比起C语言更复杂,很多人无法完全掌握。
    不推荐上手学习C++,需要很多计算机底层知识,要去操作指针和内存,比较麻烦。

  • 对于新语言的需求:
    语法像C,没有指针,没有内存管理,真正的可移植性(编写一次,到处运行),面向对象,类型安全,高质量的类库……

  • 于是有了Java
    为了实现真正的跨平台,在每个操作系统质上增加了一个抽象层,叫Java的虚拟机,统称为JVM,所有平台上只要安装了Java虚拟机就能跑Java程序。
    1995年,刚刚兴起的互联网时代,网页极其粗糙,缺乏互动性。
    图形界面程序Applet:一个有Java运行环境的浏览器插件。使得网页更加漂亮。
    (已被淘汰,现在流行GS。)
    Java语言由此开始广为人知,吸引了大量程序员放弃C和C++。

  • 比尔·盖茨:“这是迄今为止设计的最好的语言。”
    微软取得Java许可证后,在自家浏览器上支持了Applet,但它开始修改Java,试图把Java绑死在自己的Windows系统上。
    Java通过抗争使得微软放弃了Java领域,

  • 95-97年,Java开疆拓土,程序达到几十万之众
    但当时还是只能在网页上做些花活

  • 98年
    Java 2标准版,J2SE,占领桌面
    Java 2移动版,J2ME,占领手机
    Java 2企业版,J2EE,占领服务器
    但是开发桌面应用的程序员根本接受不了Java,相比原生桌面的界面非常难看。尤其是为了运行程序还得安装虚拟机。
    J2ME也是这样的,一直不受待见。更重要的原因移动互联网尚未兴起。

  • 随着互联网的发展,大家忽然发现,Java简直是为服务端程序发明的。
    强大、健壮、安全、简单,而且跨平台,在Java意义的规范指导下特别适合团队开发复杂的大型项目。
    授权BA公司第一个使用了J2EE的许可证,然后这个公司推出了weblogic。
    它凭借“集群功能”,第一次展示了复杂应用的可扩展性和高可用性。
    (三高问题:高可用,高性能,高并发)
    这个后来被称为“中间件”的东西把程序员从事务管理、安全管理、权限管理等方面解放出来,让他们能够专注于业务去开发,立刻捕获了大量程序员的心。

  • IBM在Java上疯狂投入
    不仅开发了自己的一个应用服务器,叫Websphere,还推出了Eclipse这样极具魅力的开发平台
    把IBM推向了一个新的高峰。

  • 程序员也对Java十分热爱
    基于Java开发了非常多的平台和工具,比如:
    构建工具:Ant,Maven,Jekins
    应用服务器:Tomcat
    Web开发:Struts,Spring,Hibernate,myBatis
    开发工具:Netbean,Intellij Idea

  • 微软眼睁睁看着服务器端市场被Java占据,赶紧推出了自己的产品,.NET来对抗
    但是Java已经不在乎了,因为微软的系统是封闭的所有的软件都是自家的开发工具,只要用.NET就会绑定微软,而且微软的系统只能运行在Windows的服务器上,这个服务器在高端的市场占有率太低。

  • 2005年,Ruby突然崛起,号称开发效率比Java快5-10倍
    结合php体系和Java的优点,特别适合快速的开发一些简单的Web网站。
    虽然发展很快,但根本没有对Java产生实质性的威胁,因为使用Ruby语言搭建大型商业系统的非常的少。
    PHP、Python等适合快速开发不太复杂的Web系统。但真正的大型Web系统都是非常复杂的,都是Java去做的。

  • 2006年,Hadoop让Java进入了大数据领域
    由于使用Java语言,很多程序员在理解了mapper reduce分布式文件管理系统之后,很快就能编写一些处理海量数据的程序。

  • 2008年,Android系统横空出世
    随着移动互联网的爆发以及迅速普及,运行在安卓之上正是Java。
    Java在谷歌的支持下,以一种意想不到的方式占领了手机端,完成了J2ME没有达成的目的。


14 入门 Java特性和优势

  • 简单易学
    可以说是C++的语法纯净版,没有头文件,没有一些指针运算,也不用去分配内存,而且语法基于C,学习起来是完全不费力。

  • 面向对象
    面向对象是一种程序设计技术,它将重点放在对象,以及对象之间的接口上。它模拟的是人的思维去写程序,所以人去学习非常的快。
    Java中就流传了一句话,“万物皆对象”。

  • 可移植性
    即跨平台性。这是Java一个最重要的优势。
    Java的代码可以跨平台的去移植,不用管操作系统、硬件环境,一次编写到处运行。Write once,run anywhere。

  • 高性能。
    Java里有个东西叫做”即时编译“,可以使代码的效率接近C++的效率。随着技术一天天的完善,也许有一天会超过C++。

  • 写分布式的程序
    Java就是为网络分布式环境所设计的。能够处理很多TCP/IP协议上的东西。在Java中通过一个URL统一资源定位服务方案,访问网络上的资源,就跟访问本地一样。
    而且Java还支持一些远程的方法调用,使得一些程序能够通过网络调用方法,也是非常强大的。

  • 动态性
    Java本身是不具有动态性的,但Java有一个反射机制,让Java有了一定程度的动态性。
    动态性是一个非常重要的特性。很多框架的底层都是基于反射,而且这一点是C++语言无法实现的。

  • 支持多线程
    多线程的使用可以带来更好的交互行为和实时行为。
    多线程的简单性也是Java成为主流服务器端开发源的主要原因之一。

  • 安全性,健壮性
    Java适合用于网络的分布式环境。为了达到这些目标,Java在安全性方面投入了很大精力。使Java可以构建防病毒、防篡改的系统。
    Java吸收了C语言跟C++的优点,而且去掉了它们影响程序健壮性的部分。(指针和内存管理)
    Java程序几乎不可能造成计算机的崩溃,Java每次运行的时候都会对内存进行一些检查,确认它都是合法的,不至于引起任何问题。
    哪怕真的出现了问题,程序也不会崩溃。因为Java里面有个“异常机制”,可以通过捕获异常来解决所有的异常。

  • 使用的人多

  • Java为什么能够成功?
    自身过硬的实力外,还有运气,正好是踩中了互联网发展的节奏。
    就好比微软的成功,除了Windows好用之外,也正好踩中了个人电脑发展的节奏。


15 入门 Java三大版本

  • JavaSE
    Java标准版,整个Java的基础以及核心。
    主要用于开发桌面程序,以及控制台程序。

  • JavaME
    相当于Java微缩版,主要用于嵌入式开发。
    比如说一些手机程序的开发呀,但目前来说,这个差不多已经死掉了。

  • JavaEE
    Java企业版,提供了很多企业级应用开发的完整解决方案。
    比如说开发网站,企业应用系统。这是Java技术应用最广泛的领域。
    主要还是偏向于服务端的开发。

  • 学好Java的基础,是把JavaSE基础打牢
    JavaSE学好后再去学习JavaEE。


16 入门 JDK JRE JVM

JDK&JRE&JVM

  • JDK:Java Development Kit,Java开发者工具。
    比如:
    java,javac,用来编译运行Java。
    javaDoc,可以把Java生成一篇文档。
    jar,可以把Java打包成一个应用。

  • JRE:Java Runtime Environment,Java运行时环境。
    安装了JRE就能运行Java程序了。

  • JVM:Java Virtual Machine,Java虚拟机。
    可以把它当做一种规范,可以用软件实现,也可以用硬件实现,相当于在所有的操作系统上模拟一个小的CPU去处理Java相关的东西。
    之后会学Java的代码是怎么编译成自解码的。
    它有两种运行方式,一种叫“解释型”,一种叫“编译型”。
    通过这一层虚拟机,屏蔽了底层系统的差别,真正实现了一次编译到处运行。

posted @ 2023-11-03 15:26  Acolyte_9527  阅读(35)  评论(0编辑  收藏  举报