about java

---恢复内容开始---

JDK=java+API+JVM

JRE=JVM+java SE API

JAVA应用领域:

JAVA SE:Standard Edtion (早期叫J2SE)

JAVA EE : Enterprise Edtion (早期叫J2EE)

JAVA ME : Mobile Edtion  (不流行)  Android / Object C (火)

1995年,JAVA1.0,James Gosling,Green Project,"Write once ,run Anywhere"

1999年,Hotspot JVM

2006年,Sun 把大部份产品开源包括Java,遵循GPL

2009年,Oracle收购Sun

Java在类库中引用applet,用applet能够为html开发者在页面中提供一个编译好的applet的小程序,只要客户端在浏览器上安装有JRE插件,就能实现applet程序在客户端JVM上运行,由此,客户端动态网站诞生。类似有Active X。但客户端的JRE安装问题,客户端运行程序的安全性,然后CGI(common gateway interface)技术诞生。

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。

MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

Servlet:Java特殊类实现的CGI方式,增加了对httpd协议处理能力,理解httpd协议和html处理,但跟CGI一样,任何静态内容还是在JAVA程序中生成,最终有了MVC

MVC:数据,业务,展示分离;

php可以将php代码镶嵌到html中,<?php>

jsp(Java server page)同理<%language="java">

SSH:Structs(MVC框架),Spring,Hebernate

jsp运行时先通过Jasper转化成Servlet,而后用JAVA编译器编译成类

因为jsp(JAVA)技术久,代码规范,对大型,稳定性、性能要求高的站点还是优先jsp,php确实方便

JSP:让程序员能够在html代码中嵌入java代码从而实现动态站点。

applet,servlet,Java是用于使用在不同场景下的java类库

.jsp(Jasper) - .java(JDK,Java编译器,javac) - (JVM) .class 

Servlet Container:包含了JDK,能让Servlet工作起来的额外组件,

JVM instance : Servlet Container / Web Container / 

并发:php通过fastcgi技术,每个请求启动一个php进程;java启动和撤销一个JVM instance代价比php要大很多很多,所以java在每个JVM instance启动多线程;

线程私有内存区:程序计数器、JAVA虚拟机栈

线程共享内存区:方法区、java堆(java可以自动实现内存回收GC-garbage collector)

其中堆区域最可能出现内存溢出

垃圾回收算法:

1、标记-清除(有个弊端会产生碎片)

2、复制算法(避免碎片,但浪费空间)

3、标记-整理,复制算法的改进(避免内存碎片)

标记:把类标记为新生代和老龄化

垃圾回收器:

Serial  能完成对新生代的回收,一次只收一个垃圾

ParNew  实现多线程回收,只是Serial改进版本,需求多CPU

Parallel Scavenge  跟New差不多,比New吞吐量多点儿,降低回收垃圾所占的cpu时间

Serial Old

Parallel Old

CMS:Concurrent Mark Sweep 并行标记清除,标记清楚算法,特点:实现并发收集、低停顿;缺点:无法收集浮动垃圾(只要线程处在,就无法收集),基于标记清除算法可能产生碎片

G1:garbage first ,较改进:不会产生碎片;能够精确控制停顿(停顿时间用户可以定义)

实际中,垃圾回收器可以自己去定义,JAVA虚拟机的运行状况要随时监控!

JDK通常使用sun的,版本选择按照需求来定(java程序员)

安装JDK: 

rpm:下载地址http://www.oracle.com/technetwork/java/archive-139210.html

rpm -ivh jdk-xxxx

vi /etc/profile.d/java.sh

#!/bin/bash
JAVA_HOME=/usr/java/jdk1.8.0_121/
PATH=$JAVA_HOME:$PATH
export PATH JAVA_HOME

. /etc/profile.d/java.sh

源码

 

posted @ 2017-05-13 11:55  feral  阅读(217)  评论(0编辑  收藏  举报