现代Java服务端开发核心技术之互联网生态下的Java
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了现代Java服务端开发核心技术之互联网生态下的Java,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8369字,纯文字阅读大概需要12分钟。
内容图文
![现代Java服务端开发核心技术之互联网生态下的Java](/upload/InfoBanner/zyjiaocheng/853/3d794140de9a403d83af5f07618db95f.jpg)
现代Java服务端开发核心技术之互联网生态下的Java
现代Java服务端开发核心技术?1.1 信息技术发展趋势
目前信息技术主要经历了互联网、移动互联网以及以大数据、云计算、物联网、人工智能、区块链为代表的新兴技术三个阶段。
-
互联网
互联网从20世纪90年代逐渐兴起,主要是连接了世界各地的笔记本、台式机以及背后提供后台数据服务的服务器集群,其中绝大多数笔记本和台式机都运行着Windows,macOS系统,而服务器主要是以类Unix(CentOS,Ubuntu)占据主要市场优势,依靠互联网成长起来的公司有微软、谷歌、苹果、亚马逊、百度、阿里巴巴、腾讯等等。 -
移动互联网
移动互联网主要是连接了世界各地的移动设备(最典型的就是手机),它们绝大多数都运行着Android,IOS系统,依靠移动互联网公司成长起来的有美团、滴滴、小米、蚂蚁金服。 -
云计算、大数据
当然随着用户数据的爆发式增长,以海量数据为基础的大数据、云计算技术在BAT,Apple,Microsoft,Amazon,Google级别的超大型互联网公司有广泛的应用场景。 -
物联网
物联网会以手机为中枢,连接所有智能设备,包括智能家居、汽车、电视等嵌入式设备。 -
人工智能
人工智能(AI)作为当前最火爆的技术之一,国内的BAT纷纷开始根据自身核心业务布局,阿里巴巴最早将人工智能应用在电商和物流领域,而百度开发出了对话时人工智能操作系统Dueros和自动驾驶平台Apollo,而腾讯则是在游戏领域应用人工智能 -
区块链
而区块链经历了数字货币、智能合约、和超级账本三个发展阶段,区块链技术可以广泛使用在金融、供应链、物流、公共服务领域,解决互联网的信任问题。
目前蚂蚁金服已经有大量的区块链应用落地。
1.2 浅谈计算机系统架构
1.2.1 计算机硬件系统
现代计算机是由运算器、控制器、存储器、输入设备、输出设备五大部分组成,它们各司其职,完成了数据的计算、存储、传输任务,计算机整体架构如下图所示
下面是它们各个组件的功能介绍:
-
CPU:也被称为中央处理器,由运算器和控制器组成,其主要作用是数据计算(从内存中获取指令并执行后将结果返回给内存或者写入到磁盘)和控制其他设备(声卡显卡,鼠标键盘)协同工作。目前主流的CPU架构有基于Intel的复杂指令集的X86架构(32位和64位)和手机(ARM指令集),服务器(Ultra SPARC指令集)的精简指令集。CPU通过总线(数据总线、地址总线、控制总线)和外部进行交互。
-
内存:采用编址存储,其主要作用是用来作为程序的工作区,程序运行时其数据和指令会被加载到内存,断电后数据会丢失。
-
硬盘:其主要作用是永久性存储海量数据,分为机械式硬盘和固态硬盘两大类。
-
IO设备:其主要作用是用来数据的输入输出,常见的输入设备包括鼠标键盘,常见的输出设备包含声卡,显卡,打印机等等。网卡主要是负责数据在网络上的传输。
在后期程序排错时除了考虑程序本身的错误之外还要考虑计算机硬件故障(例如磁盘被写满,网络不通)等问题。
1.2.2 计算机软件系统
软件出现的作用是实现了人和计算机更好的交互,它是由开发人员采用某种编程语言来编写一系列的指令以及产生的数据组成。
不同平台的软件有不同的交互方式:
- 服务器端:运维开发人员基于命令行的字符界面实现人机交互。
- PC桌面端:开发人员、普通用户通常是基于图形化界面实现人机交互。
- 移动端:用户通常是通过语音,手势触控实现人机交互。
而软件通常被分为系统软件和应用软件
- 系统软件:系统软件有Unix,Linux,macOS,Windows,Android,IOS,编译器、数据库等等。
- 应用软件:应用软件有淘宝、京东、微信、支付宝等等。
通常由操作系统(Windows,Linux,macOS)的内核负责和底层硬件交互,应用软件运行在操作系统之上。因此操作系统起着承上启下的作用。
1.2.3 常用应用的软硬件协作实现
- 聊天:应用程序监听键盘输入的数据,放到内存,然后传给网卡,通过网络传递给另外一个网卡,再从网卡传到内存,显示在显示器上。
- 听音乐:应用程序将音乐数据加载到内存之后,然后写到声卡上。
- 看视频:应用程序将视频数据加载到内存,然后写到显卡上。
- 读文档: 应用程序将磁盘中的文档数据加载到内存后显示到屏幕上。
- 写文档: 应用程序将内存中的数据写入到磁盘上。
1.3 编程语言发展史及其应用场景
1.3.1 程序和指令
程序是为了完成某项特定任务(例如聊天,听音乐等等)而使用某种编程语言编写的一组指令序列,而指令是对计算机进行程序控制的最小单位,由操作码和操作数组成,操作码指的是机器要执行什么操作(例如加减乘除),而操作数就是具体执行的对象(具体的数据以及存放数据的位置),所有指令的集合称为计算机的指令系统,常见的电脑指令系统有Intel X86指令集,常见的手机指令系统有ARM。因此手机上的应用程序不加修改是不能在电脑上直接运行,因为不同的指令集是不兼容的。
1.3.2 编译器与高级语言
首先明确一点,计算机最底层只能识别二进制(010101)的机器指令,那些由汇编语言或者是高级程序设计语言编写的应用程序只是为了方便开发人员理解和维护,这就需要将汇编语言和高级语言翻译成计算机能够理解的机器语言,而编译器或者解释器就是做这个工作的。它的出现让开发人员在编写程序时不用考虑底层硬件的差异性,只需要专注业务逻辑的实现即可。
1.3.3 编程语言发展史
任何事物都是从无到有,逐步发展壮大起来的,编程语言也是一样。
计算机程序设计语言经历了机器语言到汇编语言和高级程序设计语言三个阶段,其特点是使得程序员用编程语言开发、测试、部署应用程序越来越方便、高效。但是是以牺牲效率为代价,但是随着计算机硬件的发展,绝大多数应用场景的效率损失可以忽略不计。
-
机器语言
计算机发展的最早期,程序员编写程序采用二进制的指令(010010101)来实现的,而每种CPU都有各自不同的指令系统(SPARC/Intel X86/ARM),因此在不同的机器上使用不同的机器语言实现。其特点是性能特别高效,而面向机器编程也就意味着不能移植,需要手动处理底层硬件的差异性,而且二进制的指令难以理解和维护。 -
汇编语言
随着时代和计算机技术的发展,汇编语言和编译器的出现解决了机器语言需要记住非常多的二进制机器指令的难题,但是还是没有从根本上解决移植性的问题,只是将机器指令转换为易懂的英文单词,然后由编译器编译成机器指令,因为计算机终归揭底只能识别0001110100110机器指令,而且汇编语言是面向机器的,不同机器(SPARC/Intel X86/ARM)的汇编指令是不相同的。 -
高级程序设计语言
高级程序设计语言的高级之处体现在开发人员在编写程序时无需关心计算机底层硬件差异而只需要专注于业务模块实现即可。甚至是可以实现 一次编译,到处运行,这里以Java为例子:通过实现不同平台的JVM,编译生成的字节码文件可以在任意的JVM上运行。
高级语言通常都需要编译器或者是解释器将源码编译或者解释后执行。
高级语言主要分为面向过程和面向对象两种,其中典型的面向过程语言就是C,面向对象的编程语言有Java,C++等等。
1.3.3 编程语言应用场景
如果想知道目前主流的编程语言有哪些,可以访问tiobe 首页获取编程语言排行榜,如下图所示,从Tiobe官网获取最新(2018年10月)的编程语言排行榜的前20名,
根据Tiobe排行榜得知,Java/C/C++分别排在前三名, 随后紧跟着Python,C#,PHP,JavaScript等等,每种语言都有不同的应用场景和擅长的领域,如下表格所示。
编程语言 | 应用场景 |
---|---|
C | 硬件驱动、操作系统、系统软件 |
C++ | 系统软件、网络通讯、科学计算 |
C# | Windows应用,Web应用 |
Java | 大型互联网应用(淘宝、天猫),Android,大数据 |
Python | 人工智能、机器学习、自动化运维、数据分析 、图形处理 |
PHP | 中小型网站开发 |
Objective-C/Swift | macOS,iPhone,iPad应用开发 |
JavaScript | 浏览器端、服务端、PC桌面 |
Go | 高并发、区块链 |
那么如果你作为一个野生程序员的初学者,面对如此之多的编程语言,到底应该先从哪门语言上车呢?首先需要明确语言只是实现目标的工具,而非目标本身。
本人建议Java,因为无论是招聘市场需求,还是语言的功能性和应用场景方面,Java首屈一指。
而目前互联网公司的后台业务处理通常采用Java/Python/Go去实现,而前端主要包含PC,H5,Android,IOS,微信小程序,主要由基于HTML5+CSS3+JavasScirpt的技术栈实现。
1.4 Java概述
![现代Java服务端开发核心技术之互联网生态下的Java - 文章图片](https://www.icode9.com/i/l/?n=18&i=blog/1231428/201810/1231428-20181012215745346-196629327.jpg)
Java之父-James Golsing
当人们谈论起Java时,它不仅仅是一门优秀的编程语言,还是一个非常流行的开发平台和运行平台。
- 开发平台:
经过20多年(1995年正式对外公开发布)的发展已经逐步建立起自己强大的生态体系,在大型互联网应用开发,移动端Android开发以及大数据开发占据了广阔的市场,最典型的就是国内互联网巨头-阿里巴巴在其电商、物流、金融、支付等业务场景中大量使用了Java及其相关技术栈(Spring Framework/SpringBoot/SpringCloud)。 - 运行平台:
Java程序是运行在JVM之上的,这就是Java程序跨平台实现的本质原因,而且由于Java的开放性,有越来越多的语言是运行在JVM之上的,例如大数据处理语言Scala,Android开发的Kotlin。
1.4.1 Java发展简史
-
起源
1991年,Sun公司的James Golsing领导的工程师小组想要开发一种用于像有线电视机顶盒这样的消费类电子产品的小型计算机语言,该产品的特点是由于不同的厂商选择不同的CPU和操作系统,因此要求该语言不能和特定的体系结构绑定在一起,也就是跨平台的。最初将这个语言命名为Oak,然后发现已经有一种语言叫这个名字了,然后改为Java。 -
流行
20世纪90年代末,Java赶上了互联网发展的潮流,而互联网的特点刚好和消费类嵌入式电子产品类似(不同计算机产商选择不同的CPU和操作系统),得益于Java的跨平台特性,可以制作在支持Java的Web浏览器内的程序(Applet)而逐渐流行起来。 -
生态
由于Java开源,也得到了许多大厂(例如Oracle,IBM)的支持,逐步发展成为具有开源、跨平台、高性能、支持多线程、分布式、安全可靠等诸多特性的开发平台,而且自JDK1.4以后涌现出许多开源框架,例如后期会学习的Spring Framework,MyBatis等等,用于简化开发,同时开发者可以通过阅读Java和框架的源码来提高自身的编程功力。
1.4.2 Java程序的运行机制
计算机语言按照运行机制来分来可以分为编译型和解释型
- 编译型:应用程序通过编译器将应用程序一次性编译成特定平台的机器码,并链接成特定平台的可执行文件,编译型的特点是效率高,但是不能移植。
- 解释型:应用程序通过解释器逐行解释成特定平台的机器码并立即执行,解释型的特点是效率低,但是可以实现移植。
Java程序源文件(这里以HelloWorld.java为例)首先会经过javac编译生成和平台无关的字节码文件,然后由JVM的类加载器加载JVM,接着经过字节码校验器校验后,由解释器解释执行。
内容总结
以上是互联网集市为您收集整理的现代Java服务端开发核心技术之互联网生态下的Java全部内容,希望文章能够帮你解决现代Java服务端开发核心技术之互联网生态下的Java所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。