所谓计算机编程语言,就是人与计算机之间进行信息交流沟通的一种特殊语言。
人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。
TIOBE排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube和Baidu等统计出的排名数据。
计算机语言走势
Java之父——詹姆斯.高斯林(James Gosling)。
Java版本发行时间线:
发行版本 发行时间 备注
Java 1995.05.23 Sun公司在Sun world会议上正式发布Java和HotJava浏览器
Java 1.0 1996.01.23 Sun公司发布了Java的第一个开发工具包
Java 1.1 1997.02.19
Java 1.2 1998.12.08 拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.3 2000.05.08
Java1.4 2004.02.06
Java 5.0 2004.09.30 ①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaME
Java 6.0 2006.12.11 2009.04.20 Oracle宣布收购SUN公司
Java 7.0 2011.07.02
Java 8.0 2014.03.18
Java 9.0 2017.09.22 ①每半年更新一次;②Java 9.0开始不再支持windows 32位系统
Java 10.0 2018.03.21
Java 11.0 2018.09.25 JDK安装包取消独立JRE安装包,长期支持版本
Java 12.0 2019.03.19
Java 13.0 2019.9.18
Java 14.0 2020.3.17
Java 15.0 2020.9
Java16.0 2021.3
Java17.0 2021.9 最新的长期支持版本
不是,因为在每个领域都有更合适的编程语言。
C 语言无疑是现代计算机软件编程语言的王者,几乎所有的操作系统都是 C 语言写成的。C语言是面向过程的编程语言。
C++ 是面向对象的 C 语言,一直在不断的改进。为了与C兼容,C++被迫做出了很多重大的设计妥协,结果导致语言过分华丽,过分复杂。为了与C兼容,C++并没有采用自动内存管理的策略,从而丧失了修正C最严重问题的机会。另外C++的OO设计耦合度过高,导致组件之间出现很厚的粘合层,并且带来了严重的可维护性问题。C++的应用主要集中在GUI(图形化界面)、游戏和多媒体工具包方面,其他地方很少用到。
C#是.NET开发平台的主语言。.NET开发平台包括虚拟机CLR、公共类库以及编译工具等开发环境,它是Java语言强有力的竞争对手。但是.NET环境只有Windows有。
Visual Basic主要用于图形化界面程序的设计,目前也是基于.NET平台。
JavaScript 是能运行在浏览器中的语言,丰富的前端界面离不开 Javascript 的功劳。近年来的 Node.js 又在后端占有一席之地。
Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。Python的应用方向主要是数据分析、人工智能和机器学习、网络爬虫、自动化测试、web开发、科学计算和统计等。Python的优势是语法简洁清晰,也具有丰富和强大的类库。但是Python更像是胶水语言,它通常用于将其他语言(尤其是C/C++)制作的各种模块轻松的联结在一起。而且Python的运行效率非常低。
PHP是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。LAMP(Linux+Apache+MySQL+PHP)免费套装让很多创业公司可以实现快速低成本的搭建公司网站。虽然 PHP语言使用简单,但是一直有安全漏洞问题要解决。多线程支持不好,性能低下,代码不规范等问题。行业领跑者们从着眼未来考虑,在大数据、物联网、人工智能等方面的广泛应用前景下,对待PHP的重视程度就逐渐下降了。
Ruby 强于 DSL(领域特定语言),程序员可以定义丰富的语义来充分表达自己的思想。
Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。
Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。
函数式编程有 Lisp,编写 iOS 程序有 Swift/Objective-C。
R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法
SQL 是用于访问和处理关系型数据库的标准语言, 这类数据库包括:MySQL,Oracle, SQL Server, DB2, PostgreSQL,Sybase, Access 等等
一句话概括,能留在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。
(1)优点
(2)缺点
根据2020年IDC(Internet Data Center互联网数据中心)的最新报告《Java迎来25岁》,超过900万的开发人员代表全球69%的全职开发人员使用Java——比其他任何语言都多。
Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大,Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。
作为一个平台,Java虚拟机扮演着举足轻重的作用。除了 Java语言,任何一种能够被编译成字节码的计算机语言都属于Java这个平台。Groovy、Scala、 JRuby、Kotlin等都是Java平台的一部分,它们依赖于Java虚拟机,同时,Java平台也因为它们变得更加丰富多彩。
作为一种文化,Java几乎成为了 “开源”的代名词。在Java程序中,有着数不清的开源软件和框架。如Tomcat、Struts, Hibernate, Spring,MyBatis等。就连JDK和JVM自身也有不少开源的实现,如OpenJDK、Apache Harmony。可以说,“共享”的精神在Java世界里体现得淋漓尽致。
作为一个社区,Java拥有全世界最多的技术拥护者和开源社区支持,有数不清的论坛和资料。从桌面应用软件、嵌入式开发到企业级应用、后台服务器、中间件,都可以看到Java的身影。其应用形式之复杂、参与人数之众多也令人咋舌。可以说,Java社区已经俨然成为了一个良好而庞大的生态系统。其实这才是Java最大的优势和财富。
Java语言跨平台原理
很多时候,我们写的程序可能要在多个操作系统运行,这个时候就要求我们的程序需要在尽可能不改动的情况下完实现这个目标。不同的语言实现跨平台的方式不同。Java语言实现跨平台是建立在“虚拟机”基础之上的。
在Java出现之前,最为流行的编程语言是C和C++。如果我们想要在一台使用x86_64指令集的CPU的机器(如个人PC)上运行一个C语言程序,就需要编写一个将C语言翻译成x86_64汇编语言的编译器。如果想要在一台使用arm指令集的CPU的机器(如苹果手机)上,运行一个C语言程序,同样需要编写一个将C语言翻译成arm汇编语言的编译器。这样严重影响了C程序的跨平台性,因为针对特定的指令集开发编译器是一个难度非常大的工作。
那么Java是如何解决这个问题的呢?Java设计了一套简洁的虚拟指令集,也就是字节码。如果我们想要在一台机器上运行Java程序,只需要将Java程序编译成字节码就可以了。编写一个将Java程序翻译成Java字节码的编译器,比起编写一个将Java程序翻译成x86_64指令集的编译器来说,要简单得多。可是这里产生了一个问题,难道我们的机器可以直接执行字节码这样的虚拟指令集吗?当然是不能的。我们需要针对不同的指令集,开发对应的字节码解释器。这个工作同样比较简单,实现了"一处编译,到处运行"的效果。
Java虚拟机(JVM,Java Virtual Machine)是由软件技术模拟出计算机运行的一个虚拟的计算机,它负责解释执行字节码指令集。也就是说,只要一台机器可以运行Java的虚拟机,那么就能运行Java语言编写的程序。而不同的平台,需要安装不同的Java虚拟机程序。那么我们编写完Java程序之后,需要先将.java的源文件编译为.class的字节码文件,然后在Java虚拟机中来执行这些字节码文件。
Java虚拟机的设计不仅仅解决了Java程序跨平台的问题,同时解决了很多语言的跨平台问题。
为什么配置path?
希望在命令行使用javac.exe等工具时,任意目录下都可以找到这个工具所在的目录。
例如:我们在C:\Users\Irene目录下使用java命令
我们在JDK的安装目录的bin目录下使用java命令
我们不可能每次使用java.exe,javac.exe等工具的时候都进入到JDK的安装目录下,太麻烦了。我们希望在任意目录下都可以使用JDK的bin目录的开发工具,因此我们需要告诉操作系统去哪里找这些开发工具,这就需要配置path环境变量。
方案一:只配置path
打开桌面上的计算机,进入后在左侧找到计算机,单击鼠标右键,选择属性,如图所示:
选择高级系统设置,如图所示:
在高级选项卡,单击环境变量,如图所示:
在系统变量中,选中Path 环境变量,双击或者点击编辑 ,如图所示:
在变量值的最前面,键入D:\develop\Java\jdk1.8.0_202\bin; 分号必须要写,而且还要是英文符号。如图所示:
环境变量配置完成,重新开启DOS命令行,在任意目录下输入javac 命令,运行成功。
方案二:配置JAVA_HOME+path
打开桌面上的计算机,进入后在左侧找到计算机,单击鼠标右键,选择属性,如图所示:
选择高级系统设置,如图所示:
在高级选项卡,单击环境变量,如图所示:
在系统变量中,单击新建 ,创建新的环境变量,如图所示:
变量名输入JAVA_HOME,变量值输入 D:\develop\Java\jdk1.8.0_202 ,并单击确定,如图所示:
选中Path 环境变量,双击或者点击编辑 ,如图所示:
在变量值的最前面,键入%JAVA_HOME%\bin; 分号必须要写,而且还要是英文符号。如图所示:
windows7以后的系统为下图界面
环境变量配置完成,重新开启DOS命令行,在任意目录下输入javac 命令,运行成功。
JDK安装完毕,可以开发我们第一个Java程序了。
Java程序开发三步骤:编写、编译、运行。
步骤
A:定义类
B:写main方法
C:写输出语句
D:Java程序开发运行与工作原理
E:编译和运行程序
具体如下:
在 目录下新建文本文件,完整的文件名修改为HelloWorld.java,其中文件名为HelloWorld,后缀名必须为 .java 。
在文件中输入如下代码,并且保存 :
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“HelloWorld”);
}
}
友情提示:
每个字母和符号必须与示例代码一模一样。
文件需显示后缀名
第一个HelloWord 源程序就编写完成了,但是这个文件是程序员编写的,JVM是看不懂的,也就不能运行,因此我们必须将编写好的Java源文件 编译成JVM可以看懂的字节码文件 ,也就是 .class 文件。
在源文件所在的地址栏输入cmd,然后回车。
javac Java源文件名.后缀名
举例:
javac HelloWorld.java
编译成功后,命令行没有任何提示。打开D:\atguigu\javaee\JavaSE20190624\code\day01_code目录,发现产生了一个新的文件 HelloWorld.class,该文件就是编译后的文件,是Java的可运行文件,称为字节码文件,有了字节码文件,就可以运行程序了。
Java源文件的编译工具javac.exe
注意:
如果电脑不显示后缀名,需要进行设置
打开任意一个文件夹,工具栏选择"文件夹选项"
举例
java HelloWorld
注意:HelloWorld没有后缀
Java字节码文件的运行工具:java.exe
结构:
类{
方法{
语句;
}
}
格式:
(1)大括号要对齐,并且成对写
{}的左半部分{在行尾,右半部分}单独一行,与和它成对的"{"的行首对齐
(2)每一级缩进一个Tab键
(2)并排语句和运算符两侧加空格
Java程序的入口是main方法
public static void main(String[] args){
}
(1)源文件名是否必须与类名一致?
如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。
如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。
我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。
(2)一个源文件中是否可以有多个类?public呢?
一个源文件中可以有多个类,编译后会生成多个.class字节码文件。
但是一个源文件只能有一个public的类。
(3)main方法必须在public的类中吗?Gg9527Wee
不是。
但是后面写代码时,基本上main方法(主方法)习惯上都在public类中。