Java简介 2020-12-22

java帝国的诞生

c&c++

  • 1972年c诞生
    • 贴近硬件,运行极快,效率极高
    • 操作系统,编译器,数据库,网络系统等
    • 指针和内存管理
  • 1982年c++诞生
    • 面向对象
    • 兼容c
    • 图形领域,游戏等

Java初生

  • 1995年的网页简单而粗糙,缺乏互动性

  • 图形界面的程序(Applet)

  • Java2标准版(J2SE):去占领桌面

  • Java2移动版(J2ME):去占领手机

  • Java2企业版(J2EE):去占领服务区

    • J2SE包含于J2EE中,J2ME包含了J2SE的核心类,但新添加了一些专有类

Java发展

  • 他们基于Java开发了居多平台,系统,工具
    • 构建工具:Ant,Maven,Jekins
    • 应用服务器:Tomcat,Jetty,Jboss,Weblogic
    • web开发:S图太少,Spring,Hibernate,myBatis
    • 开发工具:Eclipse,netbeian,Intellj idea,Jbuilder

java三大版本

Write Once、Run Anywhere(写一次跑一次

  • JavaSE :标准版(桌面程序,控制台开发…)
  • JavaME:嵌入式开发(手机,小家电…)
  • JavaEE:E企业级开发(Web端,服务器开发…

Java特性和优势

  • 简单性

    • 是c++语法的纯净版。没有头文件,指针运算,结构,联合,操作符重载,虚基类等等。语法基于c,因此学习起来完全不费力。
  • 面向对象

    • 面向对象是一种程序设计技术,他将重点放在数据(即对象)和对象之间的接口上。
  • 可移植性(跨平台性)

    • 这是JAVA的一个重要的优势。JAVA代码或者说字节码、二进制码可以跨平台的移植,而不用管具体的操作系统和硬件环境。JAVA本身就是面向网络的,只有在网络环境中才能显示出他的优势,比如:现在我有一个网络环境,要让我的笔记本和手机交互,笔记本环境是windows发出一个让手机定时录音的JAVA代码,手机只有简单Linux内核操作系统,照样可以完美的执行这个代码。
      “一次编写,随处运行”:“write once, run anywhere”
  • 高性能

  • 分布式

    • 1、分布式系统一定是由多个节点组成的系统。

      其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。

      2、这些连通的节点上部署了我们的节点,并且相互的操作会有协同。

  • 动态性

    • Java本质为静态语言,而不是动态语言。动态语言显著的特点是在程序运行时,可以改变程序结构或变量类型,典型的动态语言有Python、ruby、javascript等。Java不是动态语言,但Java具有一定的动态性,表现在以下几个方面:

      l 反射机制;

      l 动态字节码操作;

      l 动态编译;

      l 执行其他脚本代码;

  • 对线程

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

    • Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以构建防病毒,防篡改的系统。
  • 健壮性

    • Java是一种健壮的语言,吸收了C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如:指针、内存的申请与释放等)。Java程序不可能造成计算机崩溃。Java系统仔细检测对内存的每次访问,确认它是合法的,而且不致引起任何问题。不过,即使Java程序也可能有错误。如果出现某种出乎意料之事,程序也不会崩溃,而是把该例外抛弃。再通过异常处理机制,程序就会发现这类例外,并加以处理。
  • 总结

    在互联网快速发展的时代,对应出现了不同的操作系统(不同的平台),那么java就可以一份代码各个平台都可以运行起来。这种跨平台性是其他语言所不能相比的,这个特性才是java最独特的地方。对于语言而言,虽然在一代一代的改进,但是万变不离其中,我们只需要去精通一门就可以了。

与其他语言的对比,Java 的优势


Java 是最好的语言么?不是,因为在每个领域都有更合适的编程语言。

C 语言无疑是现代计算机软件编程语言的王者,几乎所有的操作系统都是 C 语言写成的。C++ 是面向对象的 C 语言,一直在不断的改进。

JavaScript 是能运行在浏览器中的语言,丰富的前端界面离不开 Javascript 的功劳。近年来的 Node.js 又在后端占有一席之地。Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。

Ruby 强于 DSL(领域特定语言),程序员可以定义丰富的语义来充分表达自己的思想。Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。

编写网页用 PHP,函数式编程有 Lisp,编写 iOS 程序有 Swift/ObjectiveC。

一句话概括,能留在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。

那么,Java 语言到底有什么优势可以占据排行榜第一的位置呢?

其一,语法比较简单,学过计算机编程的开发者都能快速上手。

其二,在若干了领域都有很强的竞争力,比如服务端编程,高性能网络程序,企业软件事务处理,分布式计算,Android 移动终端应用开发等等。

最重要的一点是符合工程学的需求,我们知道现代软件都是协同开发,那么代码可维护性,编译时检查,较为高效的运行效率,跨平台能力,丰富的 IDE,测试,项目管理工具配合。都使得 Java 成为企业软件公司的首选,也得到很多互联网公司的青睐。

没有短板,容易从市场上找到 Java 软件工程师,软件公司选择 Java 作为主要开发语言,再在特定的领域使用其他语言协作编程,这样的组合选择,肯定是不会有大的问题。

所以综合而言,Java 语言全能方面是最好的。

  • JDK、JRE、JVM

    • JDK:Java Development Kit(开发包)
    • JRE:java Runtime Environment(运行时环境)
    • JVM:JAVA virtual Machine(虚拟机)
  • 概述图

概述图

Java程序运行机制

  • 编译型

  • 解释性

    Java语言比较特殊,由Java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成与平台无关的字节码(也就是class文件)。当然,这种字节码不是可执行的,必须使用Java解释器来解释执行。因此可以认为:Java语言既是编译型语言,也是解释型语言。或者说,Java语言既不是纯粹的解释型语言,也不是纯粹的编译型语言。Java程序的执行过程必须经过编译,后解释两个步骤。
    Java语言负责解释执行字节码文件的是JVM(Java Virtual Machine)虚拟机。JVM是可以运行Java字节码的虚拟机。所有的平台上的JVM想变一起提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能够理解的代码,然后由虚拟机执行。在一些虚拟机的实现中,还会将一些虚拟机代码转换成特定系统的机器码执行,从而提高效率。
    JVM的实现细节:(指令集、存储器、类文件的格式、栈、垃圾回收堆、存储区)

总结:
类型原理优点缺点
编译型语言通过专门的编译器,将所有源代码依次性转换成特定平台(Windows、Linux…)执行的机器码(以可执行文件的形式存在)编译一次后,脱离了编译器也可以运行,并且运行效率高可移植差,不够灵活
解释型语言由专门的解释器,根据需要尖部份源代码临时转换成特定平台的机器码跨平台性好,通过不同的解释器,将相同的源代码解释成不同平台下的机器码一边执行一边转换,效率低
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值