自学Java-day01(初学Java)_学第一步java-程序员宅基地

技术标签: Java  java  开发语言  

一、Java 可以做什么?

 开发桌面应用程序:
	银行软件、商场结算软件
 开发面向 Internet 的 web 应用程序:
	门户网站(工商银行)、网上商城、阿里巴巴、电子商务网站
 提供各行业的解决方案
	金融、电信、电力... 
 嵌入式开发
	移动电话、可视电话、数字机顶盒和汽车导航系统

二、什么是程序?

程序一词来自生活,通常指完成某些事务的一种既定方式和过程
在日常生活中,可以将程序看成对一系列动作的执行过程的描述

例如:
去银行办理业务
去商品购物等等..

计算机中的程序:

为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令(即命令)的集合。

三、Java 起源与演变

3.1、起源

  • 20 世纪 90 年代,单片式计算机系统诞生,单片式计算机系统不仅廉价,而且功能强大,使用它可以大幅度提升消费性电子产品的智能化程度。
  • SUN 公司为了抢占市场先机,在 1991 年成立了一个由詹姆斯·高斯林(James Gosling)领导,名为“Green”项目小组,目的是开发一种能够在各种消费性电子产品上运行的程序架构。
  • 那么使用何种编程语言来设计,是项目小组头疼的事。当时 C++较为有优势的,项目小组首先考虑的是采用它来编写程序,但 C++过于复杂和庞大,再加上由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,需要让编写的程序跨平台运行,假如用 C++编写的话对程序的跨平台运行不友好。
  • 最后项目小组决定:既不用 C++编写,也不开发全新的编程语言,而是对 C++进行改造:去除了C++复杂的指针和内存管理,并结合嵌入式系统的实时性要求,最终在 1992 年,他们开发了一种名为“Oak”的面向对象语言。
  • 当他们在向硬件生产商进行演示的时候,硬件生产商对此并不感冒,OaK 语言因为缺乏硬件的支持而无法进入市场,从而被搁置一旁。
  • 1994 年,项目小组看到了浏览器在未来的发展前景,于是决定将 OaK 应用于万维网。1995 年,他们用 OaK 语言研发了一种能将小程序嵌入到网页中执行的技术——Applet,由于 Applet 不仅能嵌入网页,还可随同网页在网络上进行传输,这让无数的程序员看到了 OaK 这门语言,与此同时,OaK正式更名为 Java。从此,Java 在互联网的推动下火了。

3.2、演变

  • 1996 年 1 月,SUN 公司推出了 JDK1.0。在 JDK1.0 发布后,有很多程序员学习并运用 Java 来制作网页,JDK 包括两大部分:开发工具和运行环境。
  • 运行环境包括核心 API、集成 API、用户界面 API、发布技术、Java 虚拟机(JVM)。JDK1.0 的发布,标志着 Java 成为一种独立的开发工具。在同年 9 月,约有 8.3 万个网页应用了 Java 技术来制作。
  • JDK1.0 的代表性技术有:Java 虚拟机、Applet、AWT 等。
  • 1997 年 2 月,SUN 公司紧接着推出了 JDK 1.1,在推出后 3 周时间里,达到了近 22 万次的下载量。4 月 2 日,首届 Java One 大会在美国旧金山召开,参加会议的人超过一万人,创造了当时全球同类会议规模最高的纪录。9 月,Java Developer Connection 社区成员超过 10 万,同年还有 10 个最主
    要的操作系统供应商正式声明将在他们的产品中使用 Java。
  • JDK1.1 的代表性技术有:JDBC、JavaBeans、RMI、JAR 文件格式、Java 语法中的内部类和反射。
  • 1998 年 12 月 8 日,JDK1.2——第二代 Java 平台的企业版 J2EE 发布。
  • 1999 年 6 月,Sun 公司把 Java 体系分为三个方向:
J2ME(Java2 Micro Edition,Java2 平台的微型版):
应用于移动、无线及有限资源的环境
J2SE(Java 2 Standard Edition,Java 2 平台的标准版):
应用于桌面环境
J2EE(Java 2Enterprise Edition,Java 2 平台的企业版):
应用于基于 Java 的应用服务器

随着供应商的不同,Java 的 API 也分为三大类:

Java Core API:Java 核心类库
Java Optional API:对之前 API 的扩充
特殊 API:由特殊厂商或组织提供的 API
  • Java 2 平台的发布,是 Java 发展过程中最重要的一个里程碑,标志着 Java 的应用开始普及。
  • JKD1.2 的代表性技术有:Swing、Java IDL、EJB、Java Plug-in 等,在 API 文档中,添加了 strictfp关键字和 Collections 集合类。
  • 1999 年 4 月 27 日,HotSpot 虚拟机发布。HotSpot 是由一家叫“Longview Technologies”的小公司开发的,后来被 SUN 公司收购。HotSpot 虚拟机发布时是作为 JDK 1.2 的附加程序提供的,后来它成为了 JDK 1.3 及之后所有版本的 Sun JDK 的默认虚拟机 。
  • 2000 年 5 月,JDK1.3、JDK1.4 和 J2SE1.3 相继发布,J2SE1.3 是对 J2SE1.2 的补充和扩展,从应用领域的角度分析,JavaSE1.3 已经涵盖了数据库、WEB、网络、图形、多媒体、电话、影像等大部分的信息技术领域。
  • 2002 年 2 月 26 日,J2SE1.4 发布。与 J2SE1.3 相比,多了近 62%的类和接口。在这些新特性当中,还提供了广泛的 XML 支持、安全套接字(Socket)支持(通过 SSL 与 TLS 协议)、全新的 I/OAPI、正则表达式、日志与断言。
  • 2004 年 9 月 30 日,J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5 更名为 Java SE 5.0(内部版本号 1.5.0)。Java SE 5.0 包含了从 1996 年发布 1.0 版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化
    I/O 及可变参数。
  • 2005 年 6 月,在 Java One 大会上,Sun 公司发布了 Java SE 6。此时,Java 的各种版本已经更名,已取消其中的数字 2,如 J2EE 更名为 JavaEE,J2SE 更名为 JavaSE,J2ME 更名为 JavaME。
  • 2011 年 7 月 28 日,收购 Sun 公司的 Oracle 发布了 Java SE 7,引入了二进制整数、支持字符串的 switch 语句、棱形语法、多异常捕抓、自动关闭资源的 try 语言等新特性。
  • 2014 年 3 月 18 日,Oracle 公司发布 Java SE8,这次版本升级为 Java 带来了全新的 Lambda 表达式、流式编程等大量新特性,这些新特性使得 Java 变得更加强大。
  • 2017 年 9 月 22 日,Oracle 公司发布 Java SE 9,这次版本升级强化了 Java 的模块化系统,让 Java语言更轻量化,且采用了更高效、更智能的 GI 垃圾回收器,并在核心类库上进行大量更新,可进一步简化编程。
  • 2018 年 3 月 21 日,Java SE 10 发布,Java 10 版本带来了很多新特性,其中最备受广大开发者关注的莫过于局部变量类型推断。此外,还包垃圾收集器改善、GC 改进、性能提升、线程管控等新特性。
  • 2018 年 9 月 26 日,Java SE 11 发布。这是 Java 大版本周期变化后的第一个长期支持版本(LTS版本持续支持到 2026 年 9 月)。Java11 带来了 ZGC、Http Client 等重要特性,一共包含 17 个 JEP(JDK Enhancement Proposals,JDK 增强提案)。
  • 2019 年 3 月 20 日,Java SE 12 发布。Java 12 是短期支持版本,可在下一个版本发布之前获得 Oracle的商业支持。
  • 2019 年 9 月 23 日,Java SE 13 发布,此版本中添加了“文本块”,文本块是一个多行字符串文字,避免对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

四、Java 体系与特点

Java SE:Java Platform,Standard Edition
标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案

Java EE:Java Platform,Enterprise Edition
企业版:以企业为环境而开发应用程序的解决方案

Java ME :Java Platform, Micro Edition
微型版:致力于消费产品 和嵌入式设备的最佳解决方案

五、Java 的特性

1、是一种纯面向对象的编程语言。
2、是一种与平台无关(跨平台)的语言。(它提供了在不同平台下运行的解释环境)
3、是 一种健壮的语言,吸收了 C/C++语言的优点。
4、是有较高的安全性。(自动回收垃圾,强制类型检查,取消指针)

六、Java 跨平台原理

在这里插入图片描述

七、Java 技术的两种核心机制

7.1、Java 虚拟机(Java Virtual Machine) JVM

如图:
在这里插入图片描述

在这里插入图片描述

JVM 可以理解成一个可运行 Java 字节码的虚拟计算机系统

  • 它有一个解释器组件,可以实现 Java 字节码和计算机操作系统之间的通信
  • 对于不同的运行平台,有不同 的 JVM。

JVM 屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。

7.2、垃圾回收器(GC)

  • 不再使用的内存空间应当进行回收-垃圾回收。
  • 在 C/C++等语言中,由程序员负责回收无用内存。
  • Java 语言消除了程序员回收无用内存空间的责任:
  • JVM 提供了一种系统线程跟踪存储空间的分配情况。并在 JVM 的空闲时,检查并释放那些可以被释放的存储空间。
  • 垃圾回收器在 Java 程序运行过程中自动启用,程序员无法精确控制和干预

八、Java程序运行过程

Java 程序的类型:

命令行程序
GUI 程序
Applet 程序
J2EE web 应用程序
  • 第一步:编写Java文件(文件包含Java代码,文件后缀为.Java)
  • 第二步:.java文件通过编译器(javac.exe)将.java文件转换成.class文件(给电脑看的)
  • 第三步:运行
    在这里插入图片描述
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_54227907/article/details/124566951

智能推荐

Sample Probability Space_probability space例题-程序员宅基地

文章浏览阅读66次。Sample Probability SpaceA simple probability space consist of a tuple (Ω\OmegaΩ,ε\varepsilonε,p)Ω\OmegaΩ is a finite set (with cardinality k= ∣\mid∣Ω\OmegaΩ∣\mid∣)ε\varepsilonε = { A : A ⊆\subseteq⊆ Ω\OmegaΩ } consist of all finite subsetsEach events _probability space例题

python分布式服务系统框架_Cola:一个分布式爬虫框架 - 系统架构 - Python4cn(news, jobs)...-程序员宅基地

文章浏览阅读348次。由于早先写的WeiboCrawler问题很多,而且当时我有提到,其实可以实现一个通用的爬虫框架。最近由于要抓取新的数据,于是我就写了这个cola。下面的文字来自wiki。Cola是一个分布式的爬虫框架,用户只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。依赖由于Cola配置文件使用的yaml,所以Cola只依赖于pyyaml,安装easy_i..._cola爬虫

名悦集团国庆出行自驾游攻略-程序员宅基地

文章浏览阅读75次。在这个买车已经不是什么难事的年代,大多数人出行都会选择自驾方式,但自驾出游必然要面临一系列的问题以及做足准备工作。名悦集团小编给大家总结出了这次国庆假期出行自驾游攻略,为了保证自驾过程的安全顺利,玩得更加痛快,临行前的车辆检查时必不可少的,这些项目可以自己检查,如果实在是懒或者不懂,可以在临行前去4S店做个基础保养,以让爱车在最佳车况陪伴自己和家人朋友开始这段愉快的旅程。1.轮胎轮胎的检查是自驾前需要关键的检查之一,在自驾的旅程上不管是轮胎没气还是爆胎,都是非常令人揪心的,如果是在高速或者...

Android 输入法框架源码分析总结(1)_android 输入法源码-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏7次。参考文档 https://blog.csdn.net/huangyabin001/article/details/28434989https://blog.csdn.net/huangyabin001/article/details/28435093#commentshttps://blog.csdn.net/jieqiong1/article/details/712629871..._android 输入法源码

Ubuntu下使用nnUNet 训练自己的数据集(只管实现,不讲原理,通俗易懂)_nnunet训练自己的数据集-程序员宅基地

本文介绍了如何在Ubuntu下使用nnUNet训练自己的数据集,不涉及原理解析,只提供实现步骤。包括nnUNet简介、修改训练参数和文件位置等操作。详细内容可参考Tina的博文。

SSM实现秒杀系统案例-程序员宅基地

文章浏览阅读9.9k次,点赞10次,收藏88次。对于抢购系统来说,首先要有可抢购的活动,而且这些活动具有促销性质,这种大型活动的负载可能是平时的几十倍,所以通过增加硬件、优化瓶颈代码等手段是很难达到目标的,所以抢购系统得专门设计。在这里我们说的库存不是真正意义上的库存,其实是该促销可以抢购的数量,真正的库存在基础库存服务。用户点击『提交订单』按钮后,在抢购系统中获取了资格后才去基础库存服务中扣减真正的库存;而抢购系统控制的就是资格/剩余数。传统方案利用数据库行锁,但是在促销高峰数据库压力过大导致服务不可用,目前采用redis集群(16分片)缓存促销信息,

随便推点

正则表达式匹配各种括号内内容_正则表达式 匹配多个括号-程序员宅基地

文章浏览阅读2.8w次,点赞10次,收藏9次。用正则表达式匹配两个字符中间的文本String skh ="(?<=\\《)[^\\》]+";//用于匹配《》里面的文本String str="但实际上《kajdwdej》孙大伟多";//测试字符串Pattern pattern=Pattern.compile(skh); Matcher matcher=pattern.matcher(str); boolean is=matche_正则表达式 匹配多个括号

Android 中的Shape_linear radial sweep分别代表的什么-程序员宅基地

文章浏览阅读553次。之前一直看项目用过这个东西,但是自己都不怎么熟悉,大概就知道可以画一些圆角之类的~ 今天就来好好了解一下吧~Shape里面有很多属性,依次学习一下第一步~首先来写一个Button这个布局文件就不贴了...太简单了~ (PS:说贴出来的站出来,我保证不打死你!)接下来开始学习第一个属性:Solid:(填充)在Drawable里面创建一个butt_linear radial sweep分别代表的什么

graphpad细胞增殖曲线_如何用GraphPad Prism绘制剂量反应曲线?-程序员宅基地

文章浏览阅读6.1k次。上图是Sci文献中的dose–response curves (剂量反应曲线),横坐标是药物GS-Se-SG浓度的对数值,纵坐标是Rrelative cell viability(相对细胞活性,% of control),从图注中可以知道IC50为5.1 μM。那么什么是IC50呢?IC50 (half maximal inhibitory concentration)是指被测量的拮抗剂的半抑制浓..._graphpad细胞增殖曲线

二叉查找树(非递归、递归遍历)_二叉排序树非递归查找-程序员宅基地

文章浏览阅读658次。二叉查找树(含递归、非递归遍历)_二叉排序树非递归查找

spark-sql 查询报错:Invalid method name: ‘get_table_req‘_invalid method name: 'get_table_req-程序员宅基地

文章浏览阅读3.1k次。spark-sql> select * from zps_d001 limit 1;Error in query: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table zps_xxx. Invalid method name: 'get_table_req'org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.H_invalid method name: 'get_table_req

unknown mutation type:-程序员宅基地

文章浏览阅读1.7w次。我这边使用得是vue+elementvue得状态组成actions 这个是异步请求 通过异步请求得话 然后在调用 mutations.jsmutations.js 将数据提交到这里 this.$commit(‘test’,testTemp)index.js 这个是将数据初始化getters 这个是将 this.$store.getters.test 就能获取到了 testTemp写法是这个写法最后得原因是因为我这在 index.js 和mutation.js 为定义常量##_unknown mutation type

推荐文章

热门文章

相关标签