Java帝国的诞生

1.1972年C诞生

  • 贴近硬件,运行极快,效率极高
  • 操作系统,编译器,数据库,网络系统等都采用C语言
  • 但是,它的指针和内存管理给程序员安上了“枷锁”。它的指针没有检查制度,内存也不会自动释放,需要程序员自己释放。虽然在任何编译器都可以写C,但是它要求使用标准的C的库,这种‘暴政’对程序员很不友好。

2.1982年C++诞生

  • 面向对象
  • 兼容C
  • 在图形领域、游戏等领域做的比较好
  • 但是,它比C更加复杂,很多人无法完全掌握。其内涉及很多计算机底层的知识。

3.1995年Java诞生

  • 语法有点像C
  • 没有指针
  • 没有内存管理
  • 真正的可移植性,编写一次,到处运行
  • 面向对象
  • 类型安全
  • 高质量的类库
  • ......

浅谈Java的命名

Java,最初命名为C++--,代表在C++之上进行优化的一种语言,但是与它的设计理念不符合,因此就改成了oak。但是后来命名的时候发现oak已经被命名过了,因此也就出现了我们现在的Java这个称呼。

Java初生

  • 1995年的网页简单而粗糙,缺乏互动性
  • 由Java开发的图形界面的程序(Applet)使得网页变得稍微美观一些,也就捕获了大多数程序员的心
  • 微软的比尔·盖茨说:“这是迄今为止设计的最好的语言!”微软想将Java设计为仅供windows使用的语言,于是就有了后来的.net出现。
  • 由于Java只能最初用于图形界面开发,用途限制性比较大,于是1998年就引进了Java的三个版本:
  • Java 2 标准版(J2SE):去占领桌面
  • Java 2 移动版 (J2ME):去占领手机
  • Java 2 企业版 (J2EE):去占领服务器
  • JavaSE最初占领桌面领域做的并不很好,界面不是很好看,而且JavaME在手机端运行还要下载专门的JVM(Java虚拟机),很不方便。只有javaEE在占领服务器这一块做的比较好,也因此成为了Java比较适合的一个领域。因此很多大型的项目都采用Java语言。

浅谈为什么Java开发后微软仍要开发.NET?

Java当年打出来就是冲着跨平台来的,然后后来发现,每一个系统都有自己的规则,所以搞的东西性能就非常差。

而WIN 一直以来在 PC端是大哥的地位,而且微软跟硬件商都是玩在一起的,什么优化驱动什么的 肯定一般是WIN先来。为了提高WIN的性能,微软就因此创建了.NET。

.NET就是微软自家的东西,无论调用任何东西,跟生态都比JAVA强。包括性能。 所以桌面程序大多数是 .NET。

Java为什么要开发JVM?

Java 也是个高阶语言,要让电脑执行你编写的应用程序,也是得借助编译器的翻译。不过,Java编译时,并不直接翻译为相依于某平台的0101指令,而是翻译为中介格式的位元码(byte code)。Java 的原始码文件格式名为.java,经过编译器翻译过后,会变成.class的格式文件位元码。如果想要执行这个位元码档案,目标平台上必须安装有JVM(Java Virtual Machine)。JVM会将位元码翻译为相应平台支持的语言,从而达到跨平台的目的。

不同的平台必须安装该平台相对应的JVM。这就好比你讲中文(.java),Java编译器帮你翻译为英文(.class)。之后该英文文件,到当地之后,再由当地看得懂英文的人翻译为当地的方言。

所以JVM所担任的职责之一,就是当地的翻译员,将位元码文件翻译为当时作业系统看得懂的0101序列。不过这不是最重要的,基本上如果只是要翻译员的话,直译器(Interpreter )就办得到了。

JVM有个很重要的观念就是:「对于Java程式而言,其实它只认识一种作业系统(或说是一种机器),这个系统叫作JVM,而对于JVM而言,位元码文件就是它的可执行文件!也就是格式为.class的文件。Java代码程序,理想上,并不用理会真正执行于哪个平台之上,它只要知道如何执行于JVM之上就可以了,至于JVM实际上如何与底层平台作沟通,则是JVM自己的事!」这个观念非常的重要,对于以后能够搞清楚所PATH变量与CLASSPATH变量的概念,也有一定的帮助。

浅谈一个好的程序需要具备什么?

一个好的程序需要具备“三高”原则,即高可用、高性能、高并发。

高并发是现在互联网分布式框架设计必须要考虑的因素之一,它是可以保证系统能被同时并行处理很多请求。

高性能是指程序处理速度非常快,所占内存少,cpu占用率低。

高可用通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。

程序员们的三高:高并发、高性能、高可用

Java发展

1.大量巨头加入了Java后,他们基于Java开发了巨多的平台,系统,工具

  • 构建工具:Ant,Maven,Jekins
  • 应用服务器:Tomcat,Jetty,Jboss,Websphere,weblogic
  • Web开发:Struts,Spring,Hibernate,myBatis
  • 开发工具:Eclipse,Netbean,intellij idea,Jbuilder
  • ......

2.2006年Hadoop的出现让Java占领了大数据领域

3.2008年Andrid的出现让Java在手机端占领了一席之地,也相当于是JavaME在手机端的一个提升。

Java特性及优势

  • 简单性
  • 面向对象
  • 可移植性
  • 高性能
  • 分布式
  • 动态性(Java本身不具有动态性,它的反射机制可以满足动态性要求)
  • 多线程
  • 安全性
  • 健壮性

为什么要学习Java?

  • 它是目前最为广泛的网络编程语言
  • Java语言简单,这门语言既易学又好用。
  • 基于对象的编程更符合人的思维模式
  • 跨平台是Java语言最大的优势
  • 是解释型
  • 内置对多线程的支持
  • 安全
  • 动态(Java内部的反射机制实现)

Pass:本文主要用于学习分享,若有问题希望能在评论区给出您宝贵的意见和建议!感谢!

Java的诞生历史的更多相关文章

  1. 对“Java”的诞生历史、特点、定义等HR常问的简单题

    本人是一个学习Java的新手,在学习了Java以后,对Java的一些总结. 这里共有12点对Java的简单的阐述,如果解释的不怎么样请大家谅解哈. 1.首先我们来看一看,在Java之前的有那些打牌语言 ...

  2. 初识java——Java程序的历史、开发和运行

    上了一节Java试听课,整理出如下笔记.     Java最新版本下载 http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...

  3. 2020重新出发,JAVA语言,JAVA的诞生和发展史

    java的诞生 在1991年时候,James Gosling在Sun公司的工程师小组想要设计这样一种主要用于像电视盒这样的消费类电子产品的小型计算机语言. 这些电子产品有一个共同的特点:计算处理能力和 ...

  4. JVM基础系列第2讲:Java 虚拟机的历史

    说起 Java 虚拟机,许多人就会将其与 HotSpot 虚拟机等同看待.但实际上 Java 虚拟机除了 HotSpot 之外,还有 Sun Classic VM.Exact VM.BEA JRock ...

  5. Java SE/EE/ME概念理解(Java版本发展历史)

    继上一篇文章http://www.cnblogs.com/EasonJim/p/6181981.html中说的区别,其实分析的不够彻底,因此再次在这里做详细的分析. 零.Java与Sun.Oracle ...

  6. 如何在官网下载java JDK的历史版本

    如何在官网下载java JDK的历史版本 http://jingyan.baidu.com/article/9989c746064d46f648ecfe9a.html 如何在官网下载java JDK的 ...

  7. Java版本及历史简述

    Java版本及历史简述 初学Java,对于Java那么多版本很困惑,这里做一点笔记,如有错误希望指出. Java由Sun公司创造,后Sun公司被Oracle公司收购,Java也随之变为Oracle的产 ...

  8. 浅谈Java的诞生和现状

    昨天在旅途中登录一下很久没用的boss直聘,看看行情,一天的时间,已经有20+家公司给我发出了面试邀请,先跟大家谈谈Java的诞生和现状. 传说,在二十世纪90年代,一个叫Sun的公司,成立了一个项目 ...

  9. JavaScript 的诞生历史

    看到一篇介绍JS诞生历史的文章,很有意思,文章里描述了很多的历史细节 https://webdevelopmenthistory.com/1995-the-birth-of-javascript/

随机推荐

  1. 【问题排查过程】vm-backup的snapshots导致磁盘满

    使用中发现,vm-storage节点仅仅过了6天,就占用了800GB的硬盘空间.很不正常.下面是排查过程: 1.查看磁盘占用情况: 先登录容器,执行: df -h /dev/vdb 1012.8G 8 ...

  2. 【记录一个问题】android ndk下设置线程的亲缘性,总有两个核无法设置成功

    参考了这篇文章:https://blog.csdn.net/lanyzh0909/article/details/50404664 大体的代码如下: #include <pthread.h> ...

  3. 游戏mod启动器原理

    基本原理 游戏程序会按一定顺序读取游戏文件夹根目录的文件. 所以我们制作mod和补丁的时候需要使得我们的文件先读取,从而使得后面读取到重复内容时候,游戏运行的内存中舍弃掉原本的文件. 游戏mod启动器 ...

  4. GeoServer课程规划

    "凡事豫则立,不豫则废." --西汉·戴圣<礼记·中庸> 为了做好GeoServer课程培训,需要拟定一个课程目录,对整个课程做一个宏观上的规划.有了这个规划,就有了目 ...

  5. MyCms 自媒体 CMS 系统 v2.8,支持织梦数据导入

    MyCms 是一款基于Laravel开发的开源免费的自媒体博客CMS系统,助力开发者知识技能变现. MyCms 基于Apache2.0开源协议发布,免费且不限制商业使用,欢迎持续关注我们. V2.8 ...

  6. 多线程-守护线程-setDaemon

    1 package multithread4; 2 /* 3 * 停止线程: 4 * 1,stop方法. 5 * 6 * 2,run方法结束. 7 * 8 * 怎么控制线程的任务结束呢? 9 * 任务 ...

  7. Ubuntu 14.04更换内核

    1:查看当前安装的内核 dpkg -l|grep linux-image 2:查看可以更新的内核版本: sudo apt-cache search linux-image 3:安装新内核 sudo a ...

  8. 微服务架构 | 4.2 基于 Feign 与 OpenFeign 的服务接口调用

    目录 前言 1. OpenFeign 基本知识 1.1 Feign 是什么 1.2 Feign 的出现解决了什么问题 1.3 Feign 与 OpenFeign 的区别与对比 2. 在服务消费者端开启 ...

  9. String 不可变

    String 源码,String 的修饰符是 final String 采用的是共享模式,被放进常量池 String strA = "abc"; String strB = &qu ...

  10. 分子动力学模拟之基于自动微分的LINCS约束

    技术背景 在分子动力学模拟的过程中,考虑到运动过程实际上是遵守牛顿第二定律的.而牛顿第二定律告诉我们,粒子的动力学过程仅跟受到的力场有关系,但是在模拟的过程中,有一些参量我们是不希望他们被更新或者改变 ...