Java语言概述
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.计算机语言
通过上一篇DOS命令行的演示,发现原来操作系统计算机就如同计算机说话一样。我们告诉他做什么它就做什么。前提是,我们和他说的话内容它必须识别才可以。这就是计算机语言。 如果人要和计算机交流,那么就要学习计算机语言,计算机语言有很多种,如:C,c++,Java,Php,Golang,Python等,这里我们选择其中的一种,即Java语言。 C语言: 面向过程编程,只有函数 操作系统编程、单片机编程等领域 C++语言: 底层高效开发 面向对象,学习难度极大,目前标准发展有点乱 Java语言: WEB开发领域第一,延伸领域极多,库丰富 大数据领域生态完整 Python语言: 入门门槛低,非专业程序员容易接受,他们有丰富的专业知识,但计算机专业知识不够 Python简洁的语法,不需要让他们关注背后的细节,可以让他们较容易的掌握并开始编程 运维开发 Javascript语言: 网景公司发明的动态脚本语言,前端开发第一语言 JavaScript才是目前 前后端通吃的全栈语言 前端执行的JS代码,需要从服务器端发送到浏览器端,在浏览器端使用JS引擎执行 Go语言: C语言之父Ken Thompson亲自参与设计 静态编译型语言,但结合了动态解释性语言的特点,例如GC 充分利用多核,适合高并发场景 关于编程语言的分类博主推荐阅读: https://www.cnblogs.com/yinzhengjie/p/10629645.html
二.Java语言概述
1>.Java历史
最早就是印度尼西亚的爪哇岛,人口众多,盛产咖啡、橡胶等。Java语言最早是在1991年开始设计的,期初叫Oak项目,它初衷是跑在不同机顶盒设备中的。 1993网景公司成立。Oak项目组很快他们发现了浏览器和动态网页技术这个巨大的市场,转向WEB方向。并首先发布了可以让网页动起来的Applet技术(浏览器中嵌入运行Java字节码的技术)。 在1995年,一杯爪哇岛咖啡成就了Java这个名字。 SUN公司(Standford University Network,斯坦福大学网络公司)第一个Java公开版本1.0发布于1996年。口号是"一次编写,到处运行(Write once,Run anywhere)",跨平台运行。 1999年,SUN公司发布了第二代Java平台(Java2)。 2009年4月20日,Oracle甲骨文公司宣布将以每股9.50美元,总计74亿美金收购SUN(计算机系统)公司。2010年1月成功收购。Java商标从此正式归Oracle所有。 2010年,Java创始人之一的James Gosling离开了Oracle,去了Google。
2>.Java的组成
Java包含下面部分: 语言、语法规范。关键字if、for、class等等 编写源代码source code 依赖库,标准库、第三方库。底层代码太难使用开发效率低,封装成现成的,好比净菜直接可以烧了,但是 什么口味程序员自己定 JVM虚拟机。字节码运行在JVM之上
3>.Java跨平台运行,"一次编写,到处运行(Write once,Run anywhere)"
由于操作系统ABI(应用程序二进制接口)不一样,采用编译方式,需要为不同操作系统编译二进制程序。
1995年,Java发布Applet技术,Java程序在后台编译成字节码,发送到浏览器端,在浏览器中运行一个Applet程序,这段程序是运行在另外一个JVM进程中的。
但是这种在客户端运行Java代码的技术,会有很大的安全问题。1997年CGI技术发展起来,动态网页技术开始向后端开发转移,在后端将动态内容组织好,拼成HTML发回到浏览器端。
随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言,Java是一门简单拿易学,完全面向对象,安全可靠与平台无关的编程语言。
三.Java动态网页技术
1>.servlet
Servlet本质就是一段Java程序。
在Servlet中最大的问题是,HTML输出和Java代码混在一起,如果网页布局要调整,就是个噩梦。
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException{ message = "Hello World"; } public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy(){ } }
2>.jsp(Java Server Pages)
提供一个HTML,把它变成一个模板,也就是在网页中预留以后填充的空,以后就变成了填空了。
JSP是基于Servlet实现,JSP将表现和逻辑分离,这样页面开发人员更好的注重页面表现力更好服务客户。
JSP先转换为Servlet的源代码.java文件(Tomcat中使用Jasper转换),然后再编译成.class文件,最后就可以在JVM中运行了。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jsp例子</title> </head> <body> 后面的内容是服务器端动态生成字符串,最后拼接在一起 <% out.println("你的 IP 地址 " + request.getRemoteAddr()); %> </body> </html>
四.JDK与JRE
JRE:
它是Java Runtime Environment缩写,指Java运行时环境, 包含 JVM + Java核心类库
JDK:
它是Java Development Kit,即 Java 语言的软件开发工具包。
五.Java语言的三种技术架构
JDK也就是常说的J2SE,在1999年,正式发布了Java第二代平台,发布了三个版本: J2EE(Java 2 Platform Enterprise Edition)企业版 适用于企业级应用服务器开发。 是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如Servlet Jsp等,主要针对于WEB应用程序开发。在企业及应用相对较广,比如很多大型电商网站基本上都会选择JavaEE来开发。 J2ME(Java 2 Platform Micro Edittion)小型版(微型版) 适用于移动,无线,机顶盒等设备环境。 是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,比如手机中的应用程序等,以前诺基亚手机的塞班系统使用的就是这种语言开发的,不过随着2014年1月2日起,诺基亚正式停止更新和发布塞班应用(2014年4月27日,微软对诺基亚设备与服务部门的收购案正式完成,“Nokia”品牌被保留)。使用的J2ME的就相对较少啦,目前移动款开发的语言应该是安卓(Android)和IOS系统占主流。 J2SE(Java 2 Platform Standard Edition)标准版 适用于桌面平台。 是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。比如Java版的扫雷。 2005年,即Java5.0版本后,J2EE更名为JAVAEE, J2ME更名为JAVASE, J2SE更名为JAVAME。 Servlet、Jsp都包含在JavaEE规范中。 JDK7、JDK8、JDK11是LTS(Long Term Suppot),JDK协议是JRL(JavaResearch License)协议。
六.Java语言的特点
1>.简单性
Java舍弃了C++语言中难以掌握不安全的功能,如指针,运算符重载,多继承等;
2>.面向对象
Java和C++一样,是一种面向对象的编程语言;
3>.网络技能
网络能力强大且易于使用,Java有一个扩展的类库,用于处理HTTP和FTP之类的TCP/IP协议;
4>.健壮性
Java编译器能够检测出许多在其它语言中仅在运行时才能检测出来的问题,在Java中不会有内存分配错误,也不会有内存泄露 ;
5>.安全性
Java适用于网络/分布式环境,从开始就设计能够防范各种攻击,如运行时堆栈溢出,未经授权读写文件等;
6>.平台中立
编译器生成一个与平台无关的字节码文件,通过在不同平台上安装不同版本的虚拟机,虚拟机可以将字节码翻译成机器码;
7>.跨平台/可移植性
通过Java语言编写的应用程序在不同的系统平台上都可以运行,只需要在运行JAVA应用程序的操作系统上安装一个Java虚拟机(Java Virtual Machine,简称JVM)即可,由JVM来负责Java程序在该系统中的运行。
如下图所示,因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性,也称为可移植性。
8>.解释型
使用即时编译器将字节码翻译成机器码(也就是说Java是一个先编译后解释的语言);
9>.高性能
尽管对解释后的字节码性能已经比较满意,但在有些场合下,字节码还可以快速地翻译成运行这个程序的特定CPU的机器码;
10>.多线程
多线程可以带来更好的交互响应和实施能力。多线程翻译的简单性使Java成为服务器端主要的开发语言。
七.JDK版本说明
JDK协议是JRL(JavaResearch License)协议。 OpenJDK是Sun公司采用GPL v2协议发布的JDK开源版本,于2009年正式发布(即未被Oracle公司收购之前)。 部署JDK版本,博主推荐阅读: https://www.cnblogs.com/yinzhengjie/p/12199413.html https://www.cnblogs.com/yinzhengjie2020/p/12206579.html
八.知识扩展
1>.android底层语言是什么
Android系统是Linux系统的一种变种,系统的底层是c和c++开发的。
但是我们平时说的android app一般是用Java编写的。这是因为当初Google为了推广Android设备采取的策略,毕竟java是为大家所熟悉的且应用的最广泛的。而且java的虚拟机系统层和应用层,使系统更加安全和健壮。
最后说明一点:Android中的虚拟机是Dalvik,不是Oracle官方发布的jvm。
2>.IOS底层是什么
IOS是由苹果公司为iPhone开发的操作系统(据说是由Object-C + FreeBSD(Unix内核)开发而来)。它主要是给iPhone、iPod touch以及iPad使用。
就像其基于的Mac OS X操作系统一样,它也是以Darwin为基础的。原本这个系统名为iPhone OS,直到2010年6月7日WWDC大会上宣布改名为iOS。
IOS的系统架构分为四个层次:
核心操作系统层(the Core OS layer);
核心服务层(the Core Services layer);
媒体层(the Media layer);
可轻触层(the Cocoa Touch layer);
系统操作占用大概500MB的存储器空间。