1、计算机发展过程

2、Java简史

  • lSUN公司是一家什么样的公司?

美国SUN(Stanford University Network)公司 在中国大陆的正式中文名为“太阳计算机系统(中国)有限公司” 在台湾中文名为“升 阳电脑公司”。

  • Java为什么被发明? Green项目; 应用环境:像电视盒这样的消费类电子产品; 要求:语言本身是中立的,也就是跨平台
  • Java的发明人? James Gosling 
  • Java发展历程:

1991年,Sun公司的Green项目,Oak
          1995年,推出Java测试版
          1996年,JDK1.0
          1997年,JDK1.1
          1998年,JDK1.2,大大改进了早期版本的缺陷,是一个革命性的版本,更名为Java2
          1999 Java被分成J2SE、J2EE 和J2ME,JSP/Servlet技术诞生
          2004年,J2SE 5.0 (1.5.0) Tiger老虎.为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0。
          2006年,J2SE 6.0 (1.6.0) Mustang野马.此时,Java的各种版本被更名,取消其中的数字"2":J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME
          2009年4月20日甲骨文收购Sun公司,交易价格达74亿美元
          2011年,JavaSE7.0
          2014年 ,JavaSE8.0

Sun公司的主要竞争对手是IBM,业务高度重合
         Sun抱有很多先进的技术,但在策略上一直奉行技术保护主义,在定价策略上能多高就多高,争取利润最大化。一味抓眼前利益,而失去了前瞻的视野。
         Sun是一家极具创新能力的公司, 但是没能利用Java构建一个强有力、可变现的生态系统,没打好Java这张牌。
         2008年金融危机给sun公司致命的打击
         2009年4月20日甲骨文以现金收购Sun微系统公司,交易价格达74亿美元

3、java三大版本

• J2SE Java的标准版本 (Java2 Standard Edition) 定位在客户端,主要用于桌面应用软件的编程
              • J2ME (Java2 Micro Edition) 主要应用于嵌入式系统开发,如手机和PDA的编程
              • J2EE 企业版本(Java2 Enterprise Edition)定义在服务器端Java2的企业版,主要用于分布式网络程序的开发,如电子商务网站
              • 2005 JavaOne大会召开,Sun公司公开Java SE6。此时,Java的各种版本被更名,取消其中的数字"2":J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME

          

4、java特点

  • java是跨平台的

Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机上的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。

  • Java是简单的

• 不再有#include 和#define 等预处理功能
              • 不再有struct,union及typedef
              • 不再有函数、
              • 不再有指针、不再有多重继承
              • 不再有goto
              • 不再有操作符重载(Operatior Overloading)
              • 不再有全局变量 取消自动类型转换,要求强制转换
              • 不再有手动内存管理

  • Java是安全的

• Java取消了强大但又危险的指针。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的, 并且使用指针也容易数组越界。
             • Java提供了自动内存管理机制,由垃圾回收器在后台自动回收,
             • Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。
             • 而在运行环境提供了四级安全性保障机制:字节码校验器 -类装载器 -运行时内存布局 -文件访问限制

  • Java是完全面向对象的

• Java和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继承,多态)。
             • 由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少影响了其面向对象的彻底性!
             • Java则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。

  • Java是健壮的

• Java的强制类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。
            • 对指针的丢弃是Java的明智选择。
           • Java的安全检查机制使得Java更具健壮性。

5、Java的跨平台原理

(1)Java运行过程
           • Java程序的运行分为两步:先编译再解释执行
           • 通过“编译器”将Java源程序编译成Java 字节码文件(.class)(字节码文件采用结构中立的中间文件格式)
           • 通过不同的“虚拟机”将Java字节码文件解释为对应机器语言并执行

(2)Java跨平台和C跨平台的区别

• Java:一次编译,到处运行 ;C:多次编译,到处运行
            • 在互联网情况下,平台各异,Java的跨平台更具有优势
            • Java可以跨所有平台吗:要看有没有提供并安装相应的虚拟机
            • Java的运行速度没有C语言快
            • Java需要将class文件解释成机器码再执行;C执行执行机器码

(3)字节码文件bytecode
         • .class文件二进制文件
         • 格式中立、平台无关的二进制文件
         • 是编译的产物,是解释的原料

(4)Java虚拟机 JVM
         • JVM是Java Virtual Machine(Java虚拟机)的缩写
         • JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
         • JVM就是一个虚拟的用于执行bytecodes字节码的计算机
         • Java虚拟机是Java最核心技术,也是跨平台的基础。
         • Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
         • Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因

(5)JDK、JRE、JVM的区别联系
          • JDK:Java Development Kit 针对Java开发员的产品
          • JRE:Java Runtime Environment 是运行Java程序所必须的环境集合
          • JVM Java Virtual Machine 解释运行Java字节码文件,跨平台的核心
          • 联系:JDK 包含JRE,JRE包含JVM。

6、开发Java程序前的准备

  • 按照jdk: 需要了解jdk帮助文档
  • 按照开发工具:文本编辑器---->notepad++;开发环境-----> eclipse

1、初识Java的更多相关文章

  1. 初识Java

    Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以极强的安全性.平台无关性.硬件结构无关性.语言简洁.面向对象的特点,在网络编程语言中占据了无可比拟的优势 ...

  2. SSH 框架学习之初识Java中的Action、Dao、Service、Model-收藏

    SSH 框架学习之初识Java中的Action.Dao.Service.Model-----------------------------学到就要查,自己动手动脑!!!   基础知识目前不够,有感性 ...

  3. Java 面向对象编程——第一章 初识Java

      第一章    初识Java 1.  什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...

  4. Personal Learning Path of Java——初识Java

    初识Java 在我个人看来,Java是一门高大上的面向编程语言,这也是Java吸引我的地方.在自学Java之前,我在学校大概学过了一些C语言的知识,在学校学的那点C语言纯属是拿来打基础用的,大概了解了 ...

  5. 初识Java作业

    初识Java作业 一.    填空题 Java技术按照用途不同分为三大版本,分别是JavaSE.     javaEE       和JavaMe Java虚拟机就是一个虚拟的用于执行  .class ...

  6. Java学习笔记心得——初识Java

    初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开 ...

  7. 初识Java程序,编写简单代码?

    Dear All: 初识Java程序,编写简单代码? 首先小编在这里说下我们今天编写Java程序使用的是 eclipse 开发工具! 1.下载eclipse 官网地址:http://www.eclip ...

  8. 初识JAVA语言

    推荐阅读:  我的CSDN  我的博客园  QQ群:704621321 前言        很多游戏开发者可能会有疑问,你会C#,JS,TS,为什么还要初识JAVA呢?有人可能会说,多学点对自己有好处 ...

  9. day01-day02 初识java、注释、变量、变量命名、基本数据类型

    1. 初识java 1) 什么是java java是一门高级的计算机编程语言 2) JDK的安装 2.1) 下载2.2) 安装2.3) 验证 3) 环境变量的配置 3.1) 打开环境变量3.2) 配置 ...

  10. Java入门——初识Java

    Java入门——初识Java 摘要:本文主要对Java这门编程语言进行简单的介绍. Java简介 说明 Java语言历时十多年,已发展成为人类计算机史上影响深远的编程语言,从某种程度上来看,它甚至超出 ...

随机推荐

  1. 内核模块加载错误 “Invalid module format” 解决办法

    参考链接:  http://blog.chinaunix.net/uid-20448327-id-172345.html

  2. centos7 安装软件指南

    1. 安装Scrapy: 首先确保依赖已经安装: yum groupinstall -y development tools yum install -y epel-release libxslt-d ...

  3. opencv基础教程

    1,基本语法 环境:python3.6.6+numpy+opencv3 安装:没有详细编译,直接pip install opencv-python 矩阵和图片: img=numpy.zeros((3, ...

  4. 软件测试面试-必掌握的 Linux常用命令大全--2.0更新版!

  5. pythonのdjango 信号

    一.内置信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. Model signals pre_init # d ...

  6. python封装configparser模块获取conf.ini值

    configparser模块是python自带的从文件中获取固定格式参数的模块,因为是python只带的,大家用的应该很多,我觉得这个参数模块比较灵活,添加参数.修改参数.读取参数等都有对应的参数供用 ...

  7. mybatis一对多查询之collection的用法

    首先看一下返回的数据的格式: //获取端子信息List<Map<String, Object>> portList = doneTaskDao.queryTroubleTask ...

  8. 一、学习起步vue——安装

    学习vue第一步:安装 (windows系统) 整个运行的命令:  npm -v node -v 查看版本 npm uninstall -g vue-cli 卸载vue-cli npm install ...

  9. Centos 7部署docker

    master安装: 安装zookeeper -openjdk java--openjdk-headless rpm -i packages/mesosphere-zookeeper--.centos7 ...

  10. 无向图 解决Unity地图上固定网络上,标记走固定步数能到达的位置

    首先需要了解无向图的定义 参考:https://www.cnblogs.com/wxgblogs/p/5572391.html 我们选择链表的方式进行操作. int StartPositon; int ...