热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

跟光磊学JavaJava概述

 Java语言核心技术  1.Java的发展简史现在人们谈论Java的时候,它所表示的含义发生了一些变化,Java不只是一门高级计算机语言,更是最流行的开发平台和运行平台。1.1

 

Java语言核心技术

 

 


1. Java的发展简史

现在人们谈论Java的时候,它所表示的含义发生了一些变化,Java不只是一门高级计算机语言,更是最流行的开发平台和运行平台。


1.1 Java的发展简史-起源

在20世纪90年代(1990年)出现了一种新型的技术-单片机系统,被很多商业公司发现是一个商机,将单片机系统植入到家电设备(电视机、电冰箱、微波炉、烤箱)中可以提高家电设备的智能化水平->智能家电

Sun公司为了抢占智能家电的市场,开启了Green项目,该项目由James Gosling领导。

James Gosling

一开始James Gosling决定使用C++语言实现(1983年诞生了C++语言),但是那会儿的C++不支持跨平台,因为不同的家电设备的硬件不同,如果更换了家电设备,程序的代码需要更改。

因此James Gosling决定在C++的基础之上进行扩展和修改,但是最终重新设计了一门计算机语言-Oak(橡树),但是后来在注册商标的时候发现已经有人使用了,所以改成了Java(印度尼西亚爪哇岛)

java_logo

在2009年的时候Oracle以74亿美金收购了Sun公司,这样也就意味着Sun公司的Java、MySQL、Solaris都是属于Oracle。



1.2 Java的发展简史-流行

在20世纪90年代中后期,Java赶上了互联网的发展潮流,而互联网的特点和家电设备的特点有点类似:不同计算机的硬件设备也不同。

当时业界为了使得死板、单调的静态网页能够灵活起来,急需要一种技术开发动态的网页,这种程序可以通过互联网访问,还能够跨平台。

得益于Java的跨平台,而且可以制作Applet(一种将小程序嵌入到网页中执行的技术)逐渐流行起来



1.3 Java的发展简史-生态

经过20多年(1995年Sun公司正式对外发布了Java)的发展,逐步建立起自己强大的生态体系,尤其是自从JDK1.4以后涌现出来了非常多的为了简化开发的开源框架和中间件,例如MyBatis,Spring Framework,Spring Boot,Spring Cloud,Spring Cloud Alibaba等等。



1.4 Java的发展简史-开发平台

Java在大型分布式系统的后台(淘宝、天猫、支付宝、菜鸟物流、顺丰物流)、移动端的Android应用开发以及大数据开发占据了广阔的市场(一哥)



1.5 Java的发展简史-运行平台

Java的程序是在JVM(Java Virtual Machine)上运行的,这就是Java能够跨平台的本质原因,由于Java是开放的,有越来越多的计算机语言编写的程序也可以运行在JVM之上,例如Scala,Kotlin,Grovvy等等。



2. Java的特点

由于Java语言是开源的,也得到了很多大公司(Alibaba,Tencent,HUAWEI,Oracle,Amazon,Google)的支持,逐渐发展成了具有开源、跨平台、高性能、安全可靠、支持多线程、分布式等等诸多的特点的开发平台和运行平台。



2.1 Java是面向对象的

Java是基于C/C++的基础之上发展而来的,不同于C/C++的是Java是纯粹的面向对象的语言

面向对象就是当我们去做一件事情的时候不自己做,而是让别人做,而且我们只关心结果不在乎过程。例如去饭店吃饭,用洗衣机洗衣服等等。



2.2 Java是简单易学的

Java舍弃了C语言中特别容易引起错误的指针,并且引入了垃圾回收机制,这样在大部分场景下不需要手动释放内存,而且Java还舍弃了C++语言中一些特别复杂的语法,例如运算符重载、多继承等等。Java相比C/C++而言更加简单易学(入门简单)



2.3 Java是开源的

开源指的就是开放源代码,例如QQ、微信是不开源的,而Linux,Visual Studio Code等等都是开源的。

Linux Kernel

Java开源的好处就是开发者可以通过阅读Java语言以及相关框架、中间件的源码查看具体的实现过程,从而提高自己的技术水平。

在企业面试的时候面试官也会经常问是否阅读过Java语言以及相关框架、中间件的源码



2.4 Java是跨平台的

平台就是操作系统(OS),目前桌面端主流的操作系统就是Windows,macOS,服务端的操作系统是Linux(CentOS,Ubuntu Server)

我们以后去公司开发Java项目,首先在开发环境开发Java项目,项目开发完成以后,然后部署到测试环境进行相关的测试,测试通过以后部署到生产环境对外提供服务。

不同的环境使用的操作系统也是不同的



  • 开发环境使用的是Windows或者是macOS系统开发Java项目

    Windows

    macOS



  • 测试环境和生产环境都是使用Linux(CentOS,Ubuntu Server)来测试Java项目或者部署Java项目对外提供服务

    CentOS

    跨平台的含义就是在Windows上开发的Java项目不需要做任何的修改就可以直接在其他安装了JDK的操作系统(macOS,Linux)上运行。



跨平台的好处就是节省人力成本,因为开发一次项目通过JDK适配多个操作系统。



2.5 Java是体系结构中立的

体系结构中立有两层含义



  1. JVM的实现只需要遵守Oracle官方提供的JVM规范即可,不过大部分的Java应用都是使用Oracle官方提供的HotSpot虚拟机,除此以外一些互联网大厂(阿里巴巴、腾讯、华为)会根据自己的需求来定制JVM(定制JDK)

  2. JVM除了可以识别Java编译器(javac)编译生成的字节码文件(.class结尾的文件)以外,还可以识别Scala,Kotlin,Grovvy等等计算机语言生成的字节码文件。



3. Java的技术体系平台



3.1 Java的技术体系平台介绍

自从1998年以后Java被分成了三个版本,这三个版本分别是JavaSE,JavaEE(JakartaEE),JavaME,每个版本都是有自己的应用场景(开发方向)



  • JavaSE(Java Standard Edition):Java标准版,主要是用于桌面应用的开发,不过目前绝大多数的桌面应用都是使用C/C++开发的,很少使用Java开发桌面应用(IntelliJ IDEA),JavaSE是其他两个版本(JavaEE,JavaME)的基础,学习JavaSE是为了以后从事JavaEE开发打基础



  • JavaEE(Java Enterprise Edition):Java企业版,主要是用于开发大型企业应用的后台,JavaEE在这个领域是No.1,所谓的企业应用就是那些商业组织、大型企业创建的应用,例如阿里巴巴的淘宝、天猫、菜鸟物流等等大型企业应用的后台都是基于JavaEE实现的。



  • JavaME(Java Micro Edition):Java微型版,主要用于嵌入式电子设备(电视机、电冰箱、微波炉)或者小型移动设备(手机)的开发,但是随着3G移动智能平台的时代到来,特别是以Java为核心编程语言的Android平台的快速普及,JavaME已经淘汰





3.2 Java的学习路线

由于Java主要是擅长大型分布式系统的后台开发、大数据系统开发、Android应用开发三个开发方向

而Java语言是这三个开发方向的基石语言,无论选择哪个开发方向,首先必须要学习Java语言,然后根据市场的需求再结合自己的兴趣选择对应的开发方向。

根据现在的市场就业形势,一般大部分人都会选择大型分布式系统的后台开发,然后积累2-3年工作经验以后有兴趣可以转向大数据系统开发。

基本的学习路线:JavaSE->JavaEE->大数据



4. JDK和JRE



4.1 JDK和JRE的介绍



  • JDK(Java Development Kit) 称为Java开发工具集,JDK包含了Java开发工具(javac,java,javadoc,jar,javap,jconsole,jvisualvm)以及JRE,如果想要开发Java程序之前首先必须安装和配置JDK

  • JRE(Java Runtime Enviroment)称为Java运行时环境,JRE包含了运行Java程序所需要的类库(数学、集合、正则表达式、日志、并发、反射、序列化、网络、IO、JDBC)和JVM(Java Virtual Machine),如果想要运行已经开发好的Java程序之前必须要安装JRE,但是Java11以后不再提供单独的JRE下载。

    JDK体系结构图



4.1 Oracle Java SE Support Roadmap

Oracle Java SE Support Roadmap 访问地址 https://www.oracle.com/java/technologies/java-se-support-roadmap.html

 

Oracle Java SE Support Roadmap

Oracle Java SE Support Roadmap


LTS表示Oracle官方长期支持的版本,例如Java8,Java11,Java17,Java21,其中Java8官方支持到2030年12月,Java17官方支持到2029年9月,Oracle官方每3年发布一个LTS版本

 

non-LTS表示非Oracle官方长期支持的版本(测试版),例如Java9,Java10,Java12等等都是non-LTS版本,Oracle官方每半年发布一个non-LTS版本



4.2 如何选择JDK版本

选择JDK版本的时候分两种情况



  1. 我们在学习Java的时候可以选择高版本的JDK,但是必须是LTS版本,例如Java17

  2. 我们以后去公司开发项目的时候,公司已有的项目用什么JDK版本,那么你就优先使用什么JDK版本,公司从0开始开发项目,那么优先选择稳定而且是官方长期支持的版本,例如Java8或者Java17,目前大部分的互联网公司的Java项目都是使用Java8



推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败,PC端是可以请求 ... [详细]
  • 这篇文章主要讲解了“如何应对Android面试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何应对 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了如何在微信支付宝两套小程序中生成一张二维码,实现支付宝扫码进入支付宝小程序和微信扫码进入微信小程序的对应桌号进行点餐的功能,提供了一些实现方案供参考。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • 校园表白墙微信小程序,校园小情书、告白墙、论坛,大学表白墙搭建教程
    小程序的名字必须和你微信注册的名称一模一样在后台注册好小程序。mp.wx-union.cn后台域名https。mp.wx-union.cn ... [详细]
  • 项目需要实现弹幕,网上参考了各种方法,最后觉得transform+transition实现的效果在移动设备上性能最好,在iphone6和红米4上测试,看不到 ... [详细]
  • layui表格分页不生效怎么办
    web前端|Layui教程layuiweb前端-Layui教程小程序实例源码,ubuntuip切换,tomcat默认端改为80,爬虫完整源码,微信小程序php接口,seo专业培训班 ... [详细]
  • jvm内存区域与溢出为什么学习jvm木板原理,最短的一块板决定一个水的深度,当一个系统垃圾收集成为瓶颈的时候,那么就需要你对jvm的了解掌握。当一个系统出现内存溢出,内存泄露的时候 ... [详细]
  • 腾讯、阿里的城市大脑较量
    配图来自Canva2016年的一天,在江苏省无锡市的鸿山小镇,正在悄然进行着一场物联网、云计算等新兴科技应用的宏大计划,这就是国内智慧城市的第一个试点。4年后的今天,鸿山小镇已经 ... [详细]
  • 如何关闭迅雷会员自动续费详细介绍
    友情提示:教程内容为了更好的解决大家的问题,所以电脑教程网的每一篇内容都是图文并茂的在多端设备下呈现给大家。告诉大家的是,文章内里的图片也尤为重要, ... [详细]
author-avatar
我确实是一只猪_143_267
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有