一、背景

从后端来讲,目前市场上的电子商务软件基本上可以分为两个阵营,即php阵营和Java阵营。两个阵营的开发基本上都是各自围绕着各自的开发语言(php/Java),选取最为兼容合适的框架结构和数据库,然后进行服务器端的开发。

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开发

你想问什么是Servlet?这里我摘取了一部分介绍,希望对你的理解有一定的帮助。

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。更为详细的内容可以参考上面第一个链接。

2.JSP(J2EE)

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协议

对于网络开发来说,了解Http协议的内容是必要的,虽然它的内容并不多,但这里我还是将它单独作为一项放了出来,你可以通过上面的链接来了解它。

5.开发框架

关于这一项内容,你可以趁热打铁按着顺序学,也可以先跳过,等学习完数据库操作的相关知识后再回来补充。开发框架,顾名思义就是为了提高开发效率而引入的Web框架,你用或不用,只是开发效率的问题,甚至你自己都可以写一个新的框架。这也是我为什么把它的优先度放后。现在的主流框架是:Spring,SpringMVC,Mybatis 即SSM框架。你需要学会这三个框架的搭建,并用它们做出一个简单的增删改查的Web项目。要相对系统地入门 Spring,我推荐评价最高的两本书:《Spring实战(第4版)》和《精通Spring 4.x:企业应用开发实战》。在构建框架的时候,也许众多的配置会使你头晕,不过你也可以不去理解哪些配置都是什么含义。不明觉厉也并不会过分阻挠你将框架搭建起来。你先拿来用,解析的过程留给后面。在这里再介绍一些进阶级的框架:SpringBoot 和 SpringCloud,它们在各自的领域都有着独特的表现,其中SpringBoot则大大减少了Spring过多的配置文件,真是头发的福音。

篇幅有限,我便不在这里深入介绍框架的内容了,你可以通过下面博客中的通道来查找自己喜欢的框架内容学习。

③数据库

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)等类型。推荐一个菜鸟的简明教程,可以简单入门:

书籍方面,推荐看《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 的用法

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

顺便在这里说一下,我目前是在职Java开发,如果在学习Java的过程当中有遇见任何关于学习方法,学习路线等方面的问题,这里面聚集了很多正在学习Java技术的初学者,也有不少从事Java开发岗的大佬,与Java相关的问题都可以随时发出来讨论。我整理了这几年做开发的学习手册和开发工具等,需要的同学可自行下载。

④开发工具

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访问到了。

 小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。

原文出处:www.zhihu.com/question/19992305/answer/2376770965

从事Java后端开发,要学习哪些知识和技能?相关推荐

  1. java后端开发需要学什么_从事Java后端开发,要学习哪些知识和技能?

    首先要明确后端包括哪些职业:DBA(数据库维护优化专家),Developer(程序猿),Architect(构架师),Scrum master及类似(敏捷开发专家),Project Manager(产 ...

  2. java后端开发需要会什么技能,从事Java后端开发,需要掌握哪些知识和技能?

    很多小伙伴想转行做Java的后端,但是又不知道到底该学习些什么,做Java的后端,需要学习和了解什么? 1.首先要明确后端包括哪些职业 DBA(数据库维护优化专家) Developer(程序猿) Ar ...

  3. 震惊!2022 年秋招 Java 后端开发岗竟然一片红海!算法岗都不香了吗?

    据说,2022 年算法岗遇冷,BAT 暑期实习甚至收不到简历,Java 反而爆炸. 难道,Java 的春天(映射 Spring 全家桶)又要来了吗?作为 Java 领域的优质创作者(见下图),又可以在 ...

  4. Java后端开发需具备什么技术?这几个部分你需要关注

    Java后端开发需具备什么技术?对于初学Java并且有志于后端开发的同学来说,需要重点关注以下几个部分: Java开发普遍需要: 1.Java基础 2.数据库 MYSQL/SQLServer/Orac ...

  5. java后端开发工程师笔试_后端开发工程师面试参考

    为什么要写这篇文章 后端开发工程师的知识体系大而杂,从Java基础到算法.数据库.操作系统.网络.中间件.系统设计等都可以理解为后端的射程.下定决心开始准备面试时,可谓是千头万绪无从下手.我的开始源于 ...

  6. Java Web和Java后端开发的学习路线

    基础:比如计算机系统.算法.编译原理等等 Web开发: 主要是Web开发相关的内容,包括HTML/CSS/JS(前端页面).Servlet/JSP(J2EE)以及Mysql(数据库)相关的知识.它们的 ...

  7. 如何看待2022年秋招Java后端开发岗一片红海?

    如何看待2022年秋招Java后端开发岗一片红海? 我猜是转行去CV和NLP想当"人上人"的俊才们,发现自己卷不上"一等人上人"的算法岗,于是转投"二 ...

  8. Java后端开发。大学本科的时候我是如何赚到10w+?

    大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 很多小伙伴比较好奇 Guide 是如何从大四的时候就已经自给自足,并且用自己赚的钱去了很多地方旅游(重庆.恩施. ...

  9. 【实验室培训】大学生的Java后端开发学习之路(从App开发讲起)

    文章目录 前言 一.浅谈如何开发一款App 1.一个好的idea 2.根据这个idea完善好具体的需求 3.分工合作 4.设计阶段 ①UI设计 ②接口设计 ③架构设计 5.开发阶段 6.测试阶段 7. ...

  10. 【软件创新实验室2021年寒假集训】Java后端开发漫谈及感悟分享

    系列文章目录 [软件创新实验室2021年寒假集训]汇总篇 20级Java培训 第一天:[软件创新实验室2021年寒假集训]Java技术培训--Java前置知识学习 第二天:Java基础(一) 第三天: ...

最新文章

  1. ios ---常用的图片处理技术
  2. python自动化框架pytest接口关联串联_基于python接口自动化框架搭建_pytest+jenkins+allure...
  3. Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解
  4. (译)删除未使用的前端代码
  5. md发布test-1 md发布test-1md发布test-1md发布test-1md发布test-1md发布test-1md发布test-1md发布test-1md发布test-1md发布test-
  6. loadrunner之socket协议脚本编写
  7. Java面试 - List和Set比较,各自的子类比较
  8. 用了这个评估优化LiteOS镜像利器,我有点飘...
  9. 计算机组成原理学习 笔记一
  10. 我的docker随笔21:web 服务器部署
  11. JVM学习-StringTable字符串常量池
  12. 硬软链接的区别 节点 以及重定向和管道
  13. 【180928】小飞机打陨石游戏源码
  14. 数据库系统概论(各章知识点总结)
  15. 【暗恋不可耻但无用】QQ空间爬虫-Python版(pyzone-crawler)
  16. 计算机四级数据库分值分布,英语四级的题型及分值分布
  17. 奖金100万!北大“韦神”,获奖了!
  18. 车靓靓·微水上门洗车项目介绍
  19. 零基础入门大数据工程师从底层到应用必备技术汇总
  20. MapReduce论文解读

热门文章

  1. 2021华为软挑(区域初赛)总结
  2. SENT协议(SAE-J2716)
  3. 计算H时M分S秒以后是_泵所需轴功率的计算方式
  4. java视频教程哪个好?
  5. Org-mode五分钟教程ZZZ
  6. Wireless工具配置
  7. linux锐捷认证成功无法上网,如何修复win7系统锐捷认证成功但是却无法上网的操作教程...
  8. 【毕设教学】单片机控制步进电机
  9. 【渝粤题库】广东开放大学 组织行为学 形成性考核
  10. 手把手学ROR三——Rails的代码方式