JAVA后端开发浅谈_java软件后端开发-程序员宅基地

技术标签: web app  java  android  php  后端  后端开发  

一、背景

从后端来讲,目前市场上的电子商务软件基本上可以分为两个阵营,即php阵营和Java阵营。两个阵营的开发基本上都是各自围绕着各自的开发语言(php/Java),选取最为兼容合适的框架结构和数据库,然后进行服务器端的开发。以下附上PHP和Java语言的区别介绍和原文链接:
《php和java的区别有哪些》 php中文网

Java语言

Java是一门计算机编程语言,和C++、Python等编程语言一样,Java如今依旧应用广泛。从我们日常用的安卓手机APP到大部分网站或管理信息系统的应用服务器程序都是用Java这中语言来写的。

PHP语言

PHP是Hypertext Preprocessor的缩写,是一种计算机脚本语言(Script languages)。脚本语言不需要像编程语言那样在编译时生成二进制可执行文件,而是直接对写好的PHP代码执行以达到效果。

PHP和Java的区别

一、技术区别
java是纯面向对象开发,功能强大,分支众多,没有java不能做的软件。C/S也好B/S也好。从功能上讲,没有语言可以和java相比。但其优势也是其劣势。

PHP吸收了java和c以及perl等语言优点,专注互联网领域。在WEB领域中PHP拥有得天独厚的优势,WEB领域没有语言可以和PHP相比。

二、数据库访问区别
Java通过JDBC来访问数据库,通过不同的数据库厂商提供的数据库驱动方便地访问数据库。访问数据库的接口比较统一。

三、安全性区别
在同是开源和跨平台的java面前,php丢掉了很多的优势,在代码的安全性上尤为突出。

php的开发程序在别人拿到代码后,可以很容易的进行修改。而java开发的程序由于无法看到完整的源代码,只能看到一些编译好的类文件,所以安全性较高。

四、开发成本比较
PHP在互联网应用诸多方面都强于Java,那么Java开发出的电子商务产品何以与PHP产品竞争呢?这在于Java阵营普遍走的是政府路线, 而PHP阵营走的是全民路线。Java在互联网方面靠的是大学老师的言传身教,才得以在互联网世界狺狺狂啸,而PHP是靠得是自身品质而得民心,所以才一路赞歌。

软件价格的高低很大程度上和自身成本和功能相挂钩。PHP的入门门槛较低,但是任何方面成为高手,都是万里挑一。绝大多数学过c的程序员都很容易转型为PHP程序员,这使得PHP程序员如同国球一样普及,同样更是高手如云,高质量的PHP软件产品也层出不穷。
服务器成本方面,PHP最经典的组合PHP+ MySQL + Apache,Java也是经常与MySQL + Tomcat、JBoss等软件配合。所有软件都是开源免费的,所以服务器端的投入都并不高

而Java程序员的学习成 本却是PHP成本的几倍,原因也很明朗,本身Java就不是专门给WEB开发用的。所以,Java开发电子商务的成本要远远高于PHP开发出来的同类软件 产品。但也正由于Java开发的成本较高,所以往往也是做一个同样的产品,达到同样的效果,Java需要付出比PHP开发多出N倍的时间及经济成本。直接的造成了巨大的时间及成本浪费。

二、Java后端开发之路

其实php和Java作为主流的服务端开发语言,并没有对错是非之分,语言的选取还是要根据自己的需要而来,这里我不再过多评论。在这篇文章里,我会简单介绍一下Java后端开发的一些事项和思路。

1. 什么是Java后端

所谓后端,就是服务端,接收前台传过来的信息数据,或是进行业务逻辑处理,或是与数据库进行交互(说严谨些,数据库交互也算是业务的一种,但希望你能了解我所表达的意思),服务端代码一般运行在服务器上,这也是为什么有的人也叫后端为服务器端开发(这是从广义上来讲的,因为包括数据库操作在内的后端代码通常都是挂载在服务器上,而从狭义角度来讲,服务器端只指明了服务器的行为而未包括数据库)。因此,Java后端开发就是利用Java语言,对所需的业务逻辑和数据库操作的实现。也许你觉得这个定义下的并不是很严谨,因为一个后端程序光靠Java是没法儿实现的。不用着急,接下来我还会对Java后端的开发进行更为详尽的说明,现在,你只需了解Java语言本身在后端开发中是一个怎样的角色就行。

2. Java后端要学什么

这一节,我会按照学习的先后顺序简单介绍一下Java后端需要的知识,这只是大致的思路,并不能兼顾现有的所有情况。比如web框架一栏,我也只是推荐了最为常见并广为应用的SSM框架,也许你在开发的过程中发现了更为优秀的框架或模式,也欢迎你告诉我。

①java基础
如果你是计算机专业的学生或者说从前接触过Java编程,曾自己做过一些小程序,比如计算器、时钟,那么恭喜你,你已经完成了这一项的大半工作,接下来你需要做的就是强化封装、继承、多态、泛型(视个人爱好决定,但是写的一手好泛型将会使你的代码得到质的飞跃)、反射的相关知识,以及java的网络编程和数据库操作部分,为了工程需要,你还需要熟悉java的标准库,如集合,I/O,并发。当然随着日后软件的逐渐壮大,你也许还会用到更为深入的并发编程,这些直接在“那时”学习就行。如果你之前没有学习过Java编程,那么我推荐你先在网上找一些Java的基础教程来学习,但是不能光听课,上手练习是学习一门语言最快的方法。

②Web开发
也许你会认为,后端工程师并不需要了解前端制作页面的知识。我的回答是,不尽然。虽然前后端分离是现在的趋势,但是全栈式工程师也是一抓一大把,而且当你了解前端页面的制作方法后,可以在后端制作过程中兼顾前端的功能,从而扬长避短,减少不必要的麻烦。言语是虚幻的,真正理解这句话需要你在实际开发项目中去体会。言归正传,在学习web开发之前,我仍建议你学习一些前端的知识,哪怕做不出比较美观的界面。对于学习的内容,我建议按照HTML+CSS+JavaScript的顺序来。
在对前端的知识有一定了解后,你将要学习以下知识:(由于笔者能力有限,在这里我只告诉你一些理念和力所能及的学习网址,其详细内容还需你去查找学习)
1. Servlet开发
https://www.runoob.com/servlet/servlet-intro.html
https://www.oschina.net/question/12_52027
你想问什么是Servlet?这里我摘取了一部分介绍,希望对你的理解有一定的帮助。
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。更为详细的内容可以参考上面第一个链接。
2.JSP(J2EE)
https://www.runoob.com/jsp/jsp-tutorial.html
JSP 与 PHP、ASP、ASP.NET 等语言类似,是运行在服务端的语言。
JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准。
JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。
JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
3.Tomcat
tomcat是一个开源而且免费的jsp服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。它可实现JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的一款环境。
可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
你也许发现了,以上3个内容之间有着明显的联系,所以我也建议你将他们放在一起学习,值得强调的是,这部分是Java后端开发必须非常精通的部分,因此这部分是这三部分中最需要花精力的。
4.Http协议
https://www.cnblogs.com/ranyonsue/p/5984001.html
https://www.runoob.com/http/http-tutorial.html
对于网络开发来说,了解Http协议的内容是必要的,虽然它的内容并不多,但这里我还是将它单独作为一项放了出来,你可以通过上面的链接来了解它。
5.开发框架
关于这一项内容,你可以趁热打铁按着顺序学,也可以先跳过,等学习完数据库操作的相关知识后再回来补充。开发框架,顾名思义就是为了提高开发效率而引入的Web框架,你用或不用,只是开发效率的问题,甚至你自己都可以写一个新的框架。这也是我为什么把它的优先度放后。现在的主流框架是:Spring,SpringMVC,Mybatis 即SSM框架。你需要学会这三个框架的搭建,并用它们做出一个简单的增删改查的Web项目。要相对系统地入门 Spring,我推荐评价最高的两本书:《Spring实战(第4版)》和《精通Spring 4.x:企业应用开发实战》。在构建框架的时候,也许众多的配置会使你头晕,不过你也可以不去理解哪些配置都是什么含义。不明觉厉也并不会过分阻挠你将框架搭建起来。你先拿来用,解析的过程留给后面。在这里再介绍一些进阶级的框架:SpringBoot 和 SpringCloud,它们在各自的领域都有着独特的表现,其中SpringBoot则大大减少了Spring过多的配置文件,真是头发的福音。
篇幅有限,我便不在这里深入介绍框架的内容了,你可以通过下面博客中的通道来查找自己喜欢的框架内容学习。
https://blog.csdn.net/JusticeOfHeaven/article/details/79295587

③数据库
Java会了,网络开发也学了,接下来就是数据存储的地方——数据库方面的学习。关于数据库的学习你可以分为两步,一是先学习一个数据库的相关知识,二是学习Java连接该数据库的方法,即JDBC。
1. SQL
对于数据库的选取,我建议采用MySQL,它不仅对新人很友好,而且还是Java的老搭档。你需要学习它的构成,使用方法,以及SQL语句,为了方便,你可以在网上查找网络教程。
2.JDBC
JDBC,其实就是Java与数据库之间连接所用的规范接口,你需要弄懂JDBC API的用法,连接并能操控数据库的增删查改。
3.关于数据库Redis和JDBC框架
对于 Redis,因为是基于内存的,所以性能非常高,很多项目用它作缓存。虽然是一个 key - value数据库,但 value 可以是字符串(String)、哈希(Map)、列表(List)、集合(Sets)、有序集合(Sorted Sets)等类型。推荐一个菜鸟的简明教程,可以简单入门:
http://www.runoob.com/redis/redis-tutorial.html
书籍方面,推荐看《Redis实战》,是一本非常不错且广受好评的入门书籍。
另外,Redis 的 Java 库叫 Jedis,也要简单了解下其用法。

前面我们知道,Java 访问数据库的标准 API 是 JDBC,只是,直接使用 JDBC API 进行编码操作数据库的话,代码非常繁琐,可扩展性非常低,因此,才会衍生出 Hibernate、MyBatis、SpringJDBC等对 JDBC 进行了封装的 ORM 框架,以简化开发。目前最流行的还是 MyBatis,另外 MyBatis 也容易上手。
先来了解下 ORM 这个概念,ORM = Object Relational Mapping,称为对象关系映射,即业务实体对象和关系数据库之间建立起一种映射关系,最简单的映射关系就是:一个类对应一张数据表,类的每个实例对应表中的一条记录,类的每个属性则对应表的每个字段。Hibernate 是一个标准的 ORM 框架,在实体类和数据库之间建立了完整的映射关系,基本不需要开发人员自己写 SQL,内部会自动生成 SQL 语句,因此,对于数据量非常大的应用,想要优化 SQL 语句就比较困难。MyBatis 则是一个半自动化的 ORM 框架,不同于 Hibernate 提供了从实体类到数据库表的全套映射机制,SQL 是自动生成的;而 MyBatis 则只是在实体类和 SQL 之间建立映射关系,并不自动生成 SQL 语句,因此,开发人员是需要自己写 SQL 的。这样,对 SQL 进行优化则比较方便了。
要了解 MyBatis 的用法,直接看官方文档即可,内容不多,且还有中文版本,以下是链接地址:
http://www.mybatis.org/mybatis-3/zh/index.html

当以上内容都学习完之后,你便可以自己动手进行后端开发了,如果初次做不知道流程,可以查找教程跟着做一遍。在此,我再简单说几个开发工具,希望对你的开发会有帮助。

④开发工具
1. Intellij IDEA
一种Java程序编辑器。比起eclipse,我还是更为青睐Intellij IDEA,它用起来更加的便捷舒适。
2.Maven
一个用于构建项目的工具,在构建SSM框架就可能会接触到。你在将项目间的依赖通过 xml 完美地组织到一起,可通过编译插件将项目编译成字节码文件。还有类似的 Gradle 也是不错的选择。
3. Postman
很好用的一个接口调试工具。

3.后端的开发思路

一般后端开发的过程分为以下几步:

①搭建服务器
首先要存放后端程序代码,需要一台机器,自己的电脑虽然也可以,但是自己的电脑可不能保证24小时都开机且让外网能访问到,所以需要购买一台云服务器;其次,外网能访问到意味着需要一个公网IP,购买的云服务器会配套一个对应的IP地址。
之后你可以购买一个域名。域名是用来映射到IP上,便于直接使用域名访问其绑定IP所在的服务器。在购买之后,不要忘了将该域名绑定到我们的服务器IP上,并且进行域名备案,使其合法化。
最后一步是购买SSL证书(似乎有免费的),因为配置了SSL证书后可以让我们的url访问以https开头,以加密传输的方式更加安全。这也是你做微信小程序必须的要求。
经过了这些步骤,这时我们的服务器具备了使用https协议通过域名访问的能力。接下来的工作就剩下开发我们的后端接口以及把后端程序代码部署到这台服务器上供前端访问。

②后端程序开发
这里其实就是八仙过海各显神通了,主要是写后端接口和数据库等内容。在开始之前,你要决定好以下的内容:
开发语言:Java 8
开发集成环境:IntelliJ IDEA Ultimate 2017
web框架:Springboot
构建工具:Maven
数据库:MySQL
具体的内容当然不限于我上面所举的例子,推荐使用Maven,因为用它将项目打包很方便。

③部署后端程序
首先登录购买的那台云服务器,部署前先安装好环境,主要是安装JRE和Tomcat,安装好后还需要对Tomcat进行一番配置,其中包括把我们的SSL证书配置上去。
之后将我们之前用Maven打包好的war包拷贝到安装Tomcat的webapps目录下,然后去Tomcat的bin文件夹下运行startup.bat启动tomcat,即可自动解压war包,并部署。具体实现细节视你的情况可自行百度。随着Tomcat的配置以及部署成功,我们的后端接口就可以通过url访问到了。

参考文献:
《php和Java之间的差异》 whataltair,博客园
《php和java的区别有哪些》 php中文网
《用大白话告诉你 :Java 后端到底是在做什么?》 黄小斜 程序员宅基地
《Java 后端自学之路》JusticeOfHeaven 程序员宅基地
《怎样做Java后端学习路线合理》 动力节点Java学院
https://juejin.im/post/5cb33f4a5188251ae64a7c3e
快速入门Java后端开发的正确姿势 --Keegan小钢
(部分参考内容来源不可考,如有侵权请联系我删除)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LinkinParkX/article/details/104556988

智能推荐

linux devkmem 源码,linux dev/mem dev/kmem实现访问物理/虚拟内存-程序员宅基地

文章浏览阅读451次。dev/mem: 物理内存的全镜像。可以用来访问物理内存。/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。调试嵌入式Linux内核时,可能需要查看某个内核变量的值。/dev/kmem正好提供了访问内核虚拟内存的途径。现在的内核大都默认禁用了/dev/kmem,打开的方法是在 make menuconfig中选中 device drivers --> ..._dev/mem 源码实现

vxe-table 小众但功能齐全的vue表格组件-程序员宅基地

文章浏览阅读7.1k次,点赞2次,收藏19次。vxe-table,一个小众但功能齐全并支持excel操作的vue表格组件_vxe-table

(开发)bable - es6转码-程序员宅基地

文章浏览阅读62次。参考:http://www.ruanyifeng.com/blog/2016/01/babel.htmlBabelBabel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行// 转码前input.map(item => item + 1);// 转码后input.map(function (item) { return item..._让开发环境支持bable

FPGA 视频处理 FIFO 的典型应用_fpga 频分复用 视频-程序员宅基地

文章浏览阅读2.8k次,点赞6次,收藏29次。摘要:FPGA视频处理FIFO的典型应用,视频输入FIFO的作用,视频输出FIFO的作用,视频数据跨时钟域FIFO,视频缩放FIFO的作用_fpga 频分复用 视频

R语言:设置工作路径为当前文件存储路径_r语言设置工作目录到目标文件夹-程序员宅基地

文章浏览阅读575次。【代码】R语言:设置工作路径为当前文件存储路径。_r语言设置工作目录到目标文件夹

background 线性渐变-程序员宅基地

文章浏览阅读452次。格式:background: linear-gradient(direction, color-stop1, color-stop2, ...);<linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner>] ,]? &l..._background线性渐变

随便推点

【蓝桥杯省赛真题39】python输出最大的数 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析-程序员宅基地

文章浏览阅读1k次,点赞26次,收藏8次。第十三届蓝桥杯青少年组python编程省赛真题一、题目要求(注:input()输入函数的括号中不允许添加任何信息)1、编程实现给定一个正整数N,输出正整数N中各数位最大的那个数字。例如:N=132,则输出3。2、输入输出输入描述:只有一行,输入一个正整数N输出描述:只有一行,输出正整数N中各数位最大的那个数字输入样例:

网络协议的三要素-程序员宅基地

文章浏览阅读2.2k次。一个网络协议主要由以下三个要素组成:1.语法数据与控制信息的结构或格式,包括数据的组织方式、编码方式、信号电平的表示方式等。2.语义即需要发出何种控制信息,完成何种动作,以及做出何种应答,以实现数据交换的协调和差错处理。3.时序即事件实现顺序的详细说明,以实现速率匹配和排序。不完整理解:语法表示长什么样,语义表示能干什么,时序表示排序。转载于:https://blog.51cto.com/98..._网络协议三要素csdn

The Log: What every software engineer should know about real-time data's unifying abstraction-程序员宅基地

文章浏览阅读153次。主要的思想,将所有的系统都可以看作两部分,真正的数据log系统和各种各样的query engine所有的一致性由log系统来保证,其他各种query engine不需要考虑一致性,安全性,只需要不停的从log系统来同步数据,如果数据丢失或crash可以从log系统replay来恢复可以看出kafka系统在linkedin中的重要地位,不光是d..._the log: what every software engineer should know about real-time data's uni

《伟大是熬出来的》冯仑与年轻人闲话人生之一-程序员宅基地

文章浏览阅读746次。伟大是熬出来的  目录  前言  引言 时间熬成伟大:领导者要像狼一样坚忍   第一章 内圣外王——领导者的心态修炼  1. 天纵英才的自信心  2. 上天揽月的企图心  3. 誓不回头的决心  4. 宠辱不惊的平常心  5. 换位思考的同理心  6. 激情四射的热心  第二章 日清日高——领导者的高效能修炼  7. 积极主动,想到做到  8. 合理掌控自己的时间和生命  9. 制定目标,马..._当狼拖着受伤的右腿逃生时,右腿会成为前进的阻碍,它会毫不犹豫撕咬断自己的腿, 以

有源光缆AOC知识百科汇总-程序员宅基地

文章浏览阅读285次。在当今的大数据时代,人们对高速度和高带宽的需求越来越大,迫切希望有一种新型产品来作为高性能计算和数据中心的主要传输媒质,所以有源光缆(AOC)在这种环境下诞生了。有源光缆究竟是什么呢?应用在哪些领域,有什么优势呢?易天将为您解答!有源光缆(Active Optical Cables,简称AOC)是两端装有光收发器件的光纤线缆,主要构成部件分为光路和电路两部分。作为一种高性能计..._aoc 光缆

浏览器代理服务器自动配置脚本设置方法-程序员宅基地

文章浏览阅读2.2k次。在“桌面”上按快捷键“Ctrl+R”,调出“运行”窗口。接着,在“打开”后的输入框中输入“Gpedit.msc”。并按“确定”按钮。如下图 找到“用户配置”下的“Windows设置”下的“Internet Explorer 维护”的“连接”,双击选择“自动浏览器配置”。如下图 选择“自动启动配置”,并在下面的“自动代理URL”中填写相应的PAC文件地址。如下..._設置proxy腳本