一、Java的发展历史

Java是由SUN公司的开发人员James Gosling及其领导的一个开发小组与1995年开发并推出的一门高级编程语言。经过二十几年的发展已经成为最受程序员欢迎、使用最为普遍的编程语言之一。

2004年J2SE 5.0版本问世,更新力度大,Java从此进入了发展的快车道。并将J2SE 5.0改名为Java SE 5.0。

2009年Oracle公司(甲骨文)收购Sun公司。

2014年,Java SE 8发布。(企业常用版本)

以上年份并不重要,只是为了让大家简单的了解一下Java的发展历程。

跟大家分享一个有趣的小故事,其实Java之前不叫Java,而是叫Oak(橡树),是以高斯林办公室外面的一颗橡树命名的。当他们去注册商标时,发现Oak已经被注册。于是乎,Java的几位爸爸们开始讨论给Oak改名字,他们一边喝着印度尼西亚的Java(咖啡名称)一边想名字。喝着喝着就决定把Oak改成了Java。这也是为什么Java的Logo上有一个咖啡杯的图案。

不得不说,外国人起名字真的很随意,哈哈。

詹姆斯·高斯林(Java之父)

二、Java的分类

Java SE(J2SE) ——基础部分,Java的标准版本,包括面向对象、API、JVM等等。主要应用于桌面软件的开发,如QQ、优酷等。

Java EE(J2EE) —— 企业级应用的开发,Java的企业版,建立于Java SE的基础之上,包括JSP、EJB、Service等等。主要应用于网站的开发。

Java ME(J2ME) —— 嵌入式开发。主要应用于手机游戏、手机软件、机顶盒等的开发。

而我们主要是针对先对Java SE进行学习,为后面的Java EE打下良好的基础。

三、Java的跨平台性

Java语言之所以能够受广大程序员的喜爱与它的跨平台性是分不开的。

跨平台是个什么?

我们常用的平台有苹果Mac系统,微软Windows系统和Linux系统。

有些经验的同学可能都知道,比如我在Windows下的网易云音乐安装包,在Mac和Linux下是无法安装的,需要另外下载网易云音乐的对应系统的安装包。

而咱们Java口号是“Write Once,Run Anywhere”,具有一次编译,到处运行的特点。

那么如何实现跨平台?跨平台的原理是什么?

主要原因是Java程序在运行时,采用了Java虚拟机(JVM),虚拟机也叫运行时系统。Java编译后生成的是字节码文件(.class)最终由JVM解释并执行。

在不同的操作系统上,只要安装了Java虚拟机,就可以运行同一个Java字节码文件,尽管安装在不同平台上的虚拟机不一样,但是这些虚拟机向计算机解释执行Java字节码的方式是一样的,解释执行的结果也是一样的。虚拟机抹平了不同操作系统之间的差异,从而实现了跨平台的功能。

非跨平台

跨平台

四、Java的特点

(一)面向对象。

Java是一门完全的面向对象语言,万物皆为对象是其核心思想。Java技术提供了一个清晰和高效的面向对象开发平台。

(二)可移植性。

Java具有很好的跨平台性,同一个Java字节码能够在不同的硬件平台和不同的操作系统上执行。可移植性一方面体现在它不依赖操作平台。另一 方面体现在Java规定了基本数据类型的字节长度。不存在不同硬件和操作系统上数据类型不兼容的问题。

(三)可解释性。

Java编译器编译产生的不是可执行代码,而是字节码。字节码是由Java虚拟机执行的高度优化的一系列指令,虚拟机通过解释执行Java字节码。解释字节码是创建具有跨平台性的可移植程序的有效办法。

(四)多线程。

Java的多线程技术提供了构建含有许多并发线程的途径和方法。

知识拓展

JVM:(Java Virtual Machine),Java虚拟机,JVM的作用负责解析运行class文件,保证Java的跨平台。

JRE:(Java Runtime Environment) Java程序的运行时环境,包含了JVM和运行时所需要的核心类库。如果只要运行Java程序,只要安装JRE即可。

JDK:(Java Development Kit) 是Java程序开发工具包,包含JRE和开发人员所用的工具(编译工具javac.exe 运行工具 java.exe)。

JDK、JRE、JVM之间的关系

Java入门到实践系列(1)——Java简介的更多相关文章

  1. Java入门到实践系列(2)——Java环境搭建

    一.上集回顾 在<Java入门到实践系列(1)--Java简介>中提到过,Java程序是运行在Java虚拟机的,也展示过下面这张图. JDK:Java程序开发工具包. JRE:Java运行 ...

  2. Java 理论与实践: 非阻塞算法简介——看吧,没有锁定!(转载)

    简介: Java™ 5.0 第一次让使用 Java 语言开发非阻塞算法成为可能,java.util.concurrent 包充分地利用了这个功能.非阻塞算法属于并发算法,它们可以安全地派生它们的线程, ...

  3. Java 理论与实践: 非阻塞算法简介--转载

    在不只一个线程访问一个互斥的变量时,所有线程都必须使用同步,否则就可能会发生一些非常糟糕的事情.Java 语言中主要的同步手段就是synchronized 关键字(也称为内在锁),它强制实行互斥,确保 ...

  4. java入门学习(1)一简介及其基础特点

    分类: java基础 1.为什么java如此流行,为什么历史选择了它? 因为它拥有全新的编程思想,更接近人们的语言习惯,由于其编译器把代码编译成字节码,然后再不同的平台上运行分别用不同的虚拟机去解释字 ...

  5. Java 理论与实践-非阻塞算法简介

    在不只一个线程访问一个互斥的变量时,所有线程都必须使用同步,否则就可能会发生一些非常糟糕的事情.Java 语言中主要的同步手段就是 synchronized 关键字(也称为内在锁),它强制实行互斥,确 ...

  6. 【Java探索道路安全系列:Java可扩展的安全架构】一间:Java可扩展的安全体系结构开始

    笔者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...

  7. 【Java入门提高篇】Day34 Java容器类详解(十五)WeakHashMap详解

    源码详解系列均基于JDK8进行解析 说明 在Java容器详解系列文章的最后,介绍一个相对特殊的成员:WeakHashMap,从名字可以看出它是一个 Map.它的使用上跟HashMap并没有什么区别,所 ...

  8. Java入门第一季——从此投身Java??

    找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简 ...

  9. Java入门基础,必读!Java单行、多行和文档注释!

    在编写Java的过程中,我们需要对一些程序进行注释.除了方便自己阅读之外,我们还需要为他人更好地理解我们的程序.因此,我们需要对一些程序进行注释,这些注释可以是编程思想,也可以是程序的作用,可以说是J ...

随机推荐

  1. 数据可视化之powerBI基础(五)深入了解Power BI的跨页钻取交互

    https://zhuanlan.zhihu.com/p/79036123 在 PowerBI 中还有一种有趣的交互方式:跨页钻取.它可以通过点击某个数据点,钻取到另一个页面,进一步展示该数据点的详细 ...

  2. Flex移动布局中单行和双行布局的区别以及使用

    这里是单行布局 使用ul>li  来布局 <ul class="local-nav">         <li>             <a  ...

  3. 大牛聊Java并发编程原理之 线程的互斥与协作机制

    可能在synchronized关键字的实现原理中,你已经知道了它的底层是使用Monitor的相关指令来实现的,但是还不清楚Monitor的具体细节.本文将让你彻底Monitor的底层实现原理. 管程 ...

  4. 记一次开发CefSharp做浏览器时Facebook广告页支付方式绑定不上Paypal问题

    问题:用CefSharp做浏览器开发.在做Facebook广告页面绑定Paypal支付方式时出现了绑定不上的问题. 让我们来还原问题的步骤: 第一步登录Facebook. 第二步进入广告绑卡页面选择P ...

  5. 【Nginx】如何配置Nginx日志?这是最全面的一篇了!!

    写在前面 日志对于统计排错来说非常有利的.本文总结了 Nginx 日志相关的配置如 access_log. log_format.open_log_file_cache. log_not_found. ...

  6. 基于SSM框架的简单问答社区

    前言:学习了Spring.SpringMVC.MyBatis框架后,开发了一套简单的问答社区,前端采用Bootstrap开发框架. 版本信息 IDEA:2020.1.2 JDK:14.0.1 Mave ...

  7. React js ReactDOM.render 语句后面不能加分号

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

  8. INS-40718 和 INS - 30516

    RAC  安装的时候报错, INS-40718 这个是自己填写的  scan name 和 /etc/hosts  里定义的不一致  可以cat   /etc/hosts   看一下 INS - 30 ...

  9. Jquery如何使用动画效果改变背景色

    Jquery如何使用动画效果改变背景色 一.问题引入 jquery的animate动画虽然强大,但是无法使用其进行背景色(background-color)的动画效果变化,因为animate动画效果只 ...

  10. 【mysql】- 索引使用篇

    回顾 每个索引都对应一棵B+树,B+树分为好多层,最下边一层是叶子节点,其余的是内节点.所有用户记录都存储在B+树的叶子节点,所有目录项记录都存储在内节点. InnoDB 存储引擎会自动为主键(如果没 ...