• 欢迎光临~

JavaWeb/JavaEE开发入门(概述-总纲)

开发技术 开发技术 2022-10-08 次浏览

作为初学者的浅知薄见, 漫谈概览. 欢迎指正和交流.

1. 从SE到Web到EE开发

刚入门Java开发的时候, 即使对于计算机网络有所了解, 但是对于从围绕JDK展开学习的JavaSE的过程, 到围绕基于BS架构进行的JavaWeb/JavaEE开发还是一头雾水.

 

1. 直面Servlet开发的时代(从SE到Web)

从JavaSE到JavaWeb,应该清楚,浏览器请求是如何达到Java后端程序的。

格式: http://ip:port/project/resource

域名: www.baidu.com

ip地址: 127.0.0.1:8080

一个网页请求代表的含义是什么。

  1. 通过dns协议将域名解析为ip地址,再根据tcp/ip协议将请求报文发送给ip地址相对应的主机,主机接收到报文后,根据该请求所访问的端口号,查找该端口运行的程序,由该程序来处理这个请求;

  2. 此时,通过8080端口找到主机上对应的tomcat服务器后;

  3. tomcat通过所访问的工程名,找到webapps下的工程;

  4. 再根据工程中web.xml文件,通过资源名,访问对应的servlet,从而访问到Java后端程序;

 

2. 享受SpringMVC的惬意(Web开发的解放)

手写Servlet进行开发的时候, 每一个对应的访问路径都需要单独的Servlet, 就像建一栋房子, 需要一块一块的去砌砖.

而使用SpringMVC进行开发的时候, 就像使用泥塑倒模, 我们不需要关注细节, 只需要使用框架的注解标注映射路径, 框架底层封装了对应的访问逻辑.

同时, SpringMVC还封装了很多功能强大的基础处理器.

这就是SpringMVC框架的作用.

 

3. mobile的升级和普及(我认为这是Web开发能被称为EE开发的契机)

mobile升级

电子设备的升级使PC和移动端数据交互的边界开始模糊化, Web应用的用户不仅仅是在PC端访问开发的Web应用, 单纯的Web应用需要更好的兼容性.

mobile数量剧增

同时, 电子设备剧增, 不仅需要使ip地址从4到6, 同时, 对于Web应用的可用性, 可靠性, 一致性也有了要求, 这也是分布式组件的基本理念.

JavaWeb的开发不再是单纯的关注于单一的Web页面应用数据交互, 也着眼于复杂的综合应用, 在这个过程中要求Java开发与其它语言相结合, 与其它工具相结合, 以满足多样化的用户需求与应用需求.

同时, 应用的架构设计也开始拔高角度, 开始尽可能的在项目初期对于应用架构设计时, 便考虑在迭代过程中的维护性, 在需求开发的过程中功能的拓展性, 在技术升级的过程中良好的迭代性.

 

2. 从基础到设计模式和架构(学习之法)

 

1. 从技到法(漫谈)

吾生也有涯,而知也无涯。以有涯随无涯,殆已!

(译文:人的生命是有限的,但知识是无穷的,用有限生命去追求无穷知识,会搞得精疲力竭。)

已而为知者,殆而已矣!

(译文:既然如此,还去追求知识的人,就只能弄得疲困了。)

为善无近名,为恶无近刑,缘督以为经。

(译文:人不做好事去追求名声,也不做坏事而触犯刑律,把顺着自然规律做为处事的法则。)

可以保身,可以全生,可以养亲,可以尽年。

(译文:就可以保护生命,保全天性,可以养护精神,享尽天伦。)

 

很喜欢庄子中的这一段话, 虽然有翻译, 但语义仍显模糊. 我理解为, 人的精力和时间是有限的, 如果在人生中追求各种技而不去寻求法, 就会贻误自己, 因为技无穷, 而法有道. 这里的技和法都是相对的.

打个比方, 如算法题, 基于同一个算法, 可以出无数个不同的题, 如果在做题过程中只关注一题的解法, 死记硬背代码, 下一题还是不会.

弄懂算法的适用性, 适用于哪一类题, 这个算法的核心理念, 就能举一反三, 以不变应万变, 无论换多少种情景题, 套用一个算法就能解出来.

在这里, 技即是具体的一题, 法则是这一类问题的核心算法.

 

在开发过程中我们往往会提到代码的复用性, 降低代码的耦合度, 提高代码在后期开发过程中的可维护性, 诸如此类理念...

而基于这些理念, 最基础的实现, 就是对于Java的三大特征封装(继承也在某种角度体现了这些思想), 将某一个动作总结出来, 封装成一个方法, 就不需要每次写重复的代码, 只需要调用即可.

再将目光放在其它地方, 可以发现, 即使是AOP切面等等, 无论是框架组件还是应用架构, 在某种程度上都是具有共性的.

世界是很奇妙的, 宏观和微观的理念, 往往是可以互相转化的.

在后台代码(微观角度)中, 负责不同职责的部分, 可能被称为Controller, service, mapper等, 而在项目架构(宏观角度)中, 拥有不同职责的部分, 可能被称为数据库, nosql, mq.

在一个类中封装起来的被称为方法, 在一个项目中, 被封装起来的, 被称为模块或者微服务.

 

2. 小无相功

计算机科学的小无相功, 可以说就是计算机组成原理(软硬件交互), 操作系统(软件基础), 数据结构(数据存储), 计算机网络(数据流动规则).

当足够了解这些基础科学, 无论是从事计算机哪方面的研究, 都能做到心里有底, 如虎添翼.

那么软件开发的万能心法可以说就是设计模式了, 合理的使用设计模式, 便能使代码更美观优雅, 降低代码耦合, 提高可维护性.

同时, 也许基于这些设计模式, 即使是应用的架构设计也能某种程度上做到优雅可靠(猜测hhhh, 实际上架构的设计可能还涉及到软硬件方面的各种考虑, 以及业务, 经济角度的考虑).

 

3. 着眼现实

学一门语言就累得要死, 咋学那么多语言的.

打好基础, 就能做到, 不过基于分工的角度, 专精一门也挺好的.

我觉得, 正儿八经的能在简历上写个精通某某语言真的就很牛*闪闪了已经.

 

刚入门不需要硬啃设计模式.

可以略作了解, 在工作过程中逐渐去验证和使用.

在刚开始的工作过程中, 更重要的是工具的使用, 问题的解决, 才能有饭恰.

但是为了恰更好的饭, 还是要了解, 学习设计模式, 同步提升, 逐渐深入就行, 不要一开始就硬啃, 大可不必.

 

感觉自己Spring全家桶贼6, 应该怎么涨工资.

要会MVC, 但是不能只会MVC.

在使用框架进行开发, 如果分为如下几个阶段:

  1. 遇到问题, 只能百度(小白到入门);

  2. 百度之后, 还能自己初步分析数据流动, 问题出在哪(入门到初级);

  3. 对于整个项目架构熟稔于心, 框架的配置, 架构的组成, 心里有数(初级到中高级);

  4. 高级及以上(牛闪闪了已经);

如果想要不停的进步, 不能只关注框架怎么用, 和烂大街的八股文概念, 而要深入底层, 同时在学习的过程中进行总结.

人的记忆是有限的, 学习之后使用思维导图或者博文随笔的方式进行记录归纳, 成为自己的履历, 或者等于为自己做一份备忘录, 学习应该是一个终生的好习惯.

 

4. 其它

浩如烟海的就职岗位中, 除了大厂职级划分规范些, 能互相对标, 其它中小公司的职级划分就乱七八糟的了, 就目前了解的薪资情况来看, 一线城市, 15k以上应该才摸到中级开发的边吧, 也许20k也说不定, 见识短浅, 瞎说一通.

 
程序员灯塔
转载请注明原文链接:JavaWeb/JavaEE开发入门(概述-总纲)
喜欢 (0)