Java学习(二)--java概述

一 发展

看了java的发展史,发现他的发展充满了戏剧性。它没有经过精心的策划、制作,但是它的产生却具有了划时代的意义,一切的形成都好像顺利成章,又充满了传奇。

1990年,sun公司准备为下一代只能家电编写通用控制系统。因为C++的api存在的问题,创造了一种新的语言oak。

1992年,在其竞争机顶盒平台倡议中,因其过分给用户控制权而落选。否极泰来,在这里得到了最好的验证,再坚持一点点。下一个一点点就是转机。

1994年,互联网和浏览器的出现给oak带了希望。进过调整后,着眼于浏览器方法。更名为java。

1995年初,sun公司将java语言发布到网上,免费为大家使用,包括源码。几个月后它成立最热门的语言。sun公司的大公无私成就了java,免费的共享,让它以最快的速度蔓延。开源共享的思想在此时大放光彩。

此时的java也仅仅是一种语言,想要开发负责的程序,必须要有一个强大的开发类库,JDK应用而生。

1996年初,发布了JDK1.0。包括运行环境(JRE)和开发环境(JDK)。

运行环境包括:核心API,继承API,用户界面API,发布技术,java虚拟机(jvm)

开发环境包括:编译器

1997,JDK1.1新增了JIT(即时编译)编译器,摒弃了传统的编译方式(编译一条,运行,完成后丢弃),将经常用到的指令保存在内存中,下次调用无需重新编译,这让jdk在效率上有了较大提高。

flash的出现蚕食了java语言在网页上的应用。java语言虽然为互联网上广泛使用的语言,但是它一直没有找准自己的定位。知道1998年,sun发布了历史上最JDK1.2版本。伴随着1.2发布的还有JSP/Servlet、EJB等规范,并将java分成了J2EE J2SE J2ME 三个版本。

看了java的发展史,充满了坎坷与希望。它经历了低谷,走过了“小荷才露尖角角”,也正在验证着它的辉煌。它的每次挫折,都带来了绝地反击。华丽的转身,java之美。

二 java与C#简单比较

微软推出.net平台,发布C#语言,都是为对抗java而出现。自C#诞生日起,关于
C#与java之间的论战便此起彼伏。从技术的角度,C#与java都是对传统面向对象程序设计的组件化时代的革新成果,可谓殊途同归。

相对于java,C#也有其独特的优势:microsoft提供的Visual Studio 开发平台可以很好的提高C#程序的开发效率,而且Microsoft要比java善于利用windows平台,当使用C#创建windows服务、记录windows事件日志、访问windows注册表时,.net却是更方便。

java的设计宗旨独立于任何平台,自然不会提供太多的windows特性。这也正是他的优势:跨平台。C#语言,只能局限于windows平台上。因此对于一个开放式的企业应用而言,通常会选择java作为开发语言,而不是C#。

看过一篇博客上面这样比喻java与C#的关系。java就像一个专业相机,拍摄出来的照片的好坏取决于摄影技术。而C#就像是傻瓜相机,C#继承了windows的特点:傻瓜化,便于操作,便于上手。

三 运行机制

java语言是一种特殊的高级语言,它既具有解释型语言的特性,也具有编译型语言的特性,java先编译后解释。java语言编译后不会生成特定平台的机器码,而是生成一种与平台无关的字节码。它不是可执行文件,它必须使用java解释器来解释执行。

java语言里负责解释执行字节码文件的是java虚拟机,所有平台上的jvm想编译器提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能理解的代码,然后由虚拟机来解释执行。所有平台上的JVM向上提供给java字节码程序的接口完全相同,但向下适应不同平台的接口则不相同。

四 垃圾回收机制

传统的C/C++等编程语言,需要程序员负责回收已经分配的内存。显式进行垃圾回收是一件比较困难的事情,因为程序员不总是知道应该合适释放,如果一些分配的内存得不到及时回收,就会引起系统运行速度的下降,甚至导致程序瘫痪,这种现象较内存泄露。显式垃圾回收有如下缺点:1 回收不及时,导致内存泄露,降低系统性能。2 错误回收。

java语言不需要程序员直接控制内存回收,java程序的内存分配和回收都是由JRE在后台自动进行的。JRE回收不在使用的内存,这种机制称为“垃圾回收”。通常JRE提供一个后台线程来进行检测和控制,一般都是CPU空闲或内存不足时自动进行垃圾回收。

传统的垃圾回收和java的垃圾回收,就像人工与机械的对比。垃圾回收能自动释放内存空间,减轻编程的负担,可以很好的提高编程效率,保护程序的完整性。但是它也同样存在缺点。它的开销影响程序性能。java虚拟机必须跟踪程序中有用的对象,才能确定无用对象,并进行释放。这个过程需要花费处理器的时间。其次是垃圾回收算法的不完备性。早前采用的垃圾回收算法,不能保证100%的收集到所有的废弃内存。

五  总结

做完了ITOO2.0(java项目)之后,再回头看看java的发展史,看看它的垃圾回收机制等,突然感觉关系近了。

时间: 2024-08-05 13:57:47

Java学习(二)--java概述的相关文章

Java学习:二 基础

2014 - 5 - 22 上午 Java对大小写敏感. 点号(.)用于调用方法,Java的能用语法是: object.method(parameters); Java中的常量声明使用final关键字.且仅能赋值一次.习惯上,常量名大写. 可使用static final 定义一个类常量,以便在一个类中的多个方法中使用. 类常量定义在main方法外部,以便同一类其它方法可以使用.若使用public关键字,则其它类的方法也可以使用此常量. 字符串: Java中,允许使用+号拼接两个字符串. Java

好程序员Java学习路线Java bean是个什么概念

好程序员Java学习路线Java bean是个什么概念,Bean的中文含义是"豆子",顾名思义JavaBean是一段Java小程序.JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去.所有遵循一定编程原则的Java类都可以被称作JavaBean.一. Java Bean技术概述??????? Java Bean是基于Java的组件模型,由属性.方法和事件3部分组成.在该模型中,JavaBean可以被修改或

JAVA学习篇--Java类加载

由来: 与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序(解释性语言).当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Javaclass加载到JVM里头运行,负责加载Javaclass的这部分就ClassLoader.中文叫做类加载器. 类加载器就好比一个代理,你需要什么,我通过类加载器将你需要的内容返回给你! 类加载器有什么作用? 当程序需要的某个类,那么需要通过类加载器把类的二进制加载到内存中. 解释: 类加载器也是Java类,因为其他是java类的

JAVA学习篇--JAVA的两种编程模式对比

在Drp项目中,讲解了两种编程模式Model 1和Model2,下面是对这两种模式的简单理解,以及由于Model2是基于MVC架构的模式,就将我们易混淆的MVC与我们之前学的三层架构进行对比学习一下. Model1 所谓Model1就是JSP大行其道的时代,在Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应.用少量的JavaBean来处理数据库连接.数据库访问等操作. 代码示例:修改用户信息 主页面的js跳转: function

[ Java学习基础 ] Java构造函数

构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只能与new运算符结合使用. 示例代码如下: 1 //Rectangle.java文件 2 package com.a51work6; 3 4 // 矩形类 5 public class Rectangle { 6 7 // 矩形宽度 8 int width; 9 // 矩形高度 10 int hei

Java学习(二十):获取系统参数

public static void main(String[] args){ Properties props = System.getProperties(); // 系统属性 System.out.println("Java的运行环境版本:" + props.getProperty("java.version")); System.out.println("Java的运行环境供应商:" + props.getProperty("j

[Java面试二]Java基础知识精华部分.

一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发: JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础: JAVA

最全Java学习路线图——Java学习指南

准备篇 适用/适合人群:适合基础小白 目标:掌握JavaSE. ●技术点小节: 1.开发工具的安装配置的介绍 2.JDK安装 3.DOS环境编程 4.Eclipse的安装使用 ●JAVA基础 1.基本的语法规范 2.数据类型 3.流程控制 4.函数 ●初识JavaOOP 1.类,对象,面向编程思想 2.字符串类 3.随机数 4.正则表达式 5.递归的使用 ●JavaOOP基础 1.JavaOOP之封装 2.JavaOOP之继承 3.JavaOOP之多态 4.Java访问修饰符 5.Java接口

Java学习随笔 - Java保留字

零.说在前面 之前主要是学C/CPP,由于某些原因,打算从头开始把Java的基础从头过一遍,巩固一下.于是,从今天开始开坑Java学习随笔,会将自己在复习Java过程中的一些心得体会啥的写上来,帮助自己整理知识. 一.synchronized synchronized关键字之前都没见过,于是Google了一下.它的作用是给对象.方法.代码块加锁,使得同时只能有一个线程执行.使用.相当于是互斥的一种关系. 二.transient 一个类在实现了Serializable接口之后,其中有部分数据不想进