我的Java之路--Android转Java后台


作为一个资深Android程序猿,现正在Java的道路上砥砺前行。。。

刚入职目前公司不久,领导宣布Android项目停止,全力投入到对公司主站的改造上,公司主站是Java项目,我也就开始了Java开发。

 

 

说实在的,由Android转Java还是有一定难度的,虽然都是java语言,但编码思维完全不同。我之前学习过IOS,如果说Android转IOS的难度是1,那么Android转Java的难度应该是5。Android转IOS只有OC语法的学习,代码实现思维几乎一样。Android转Java需要学习的有:1,编码思维的转变。2,项目框架的学习。3,数据库的学习,4,Tomcat及项目部署的学习。5,项目逻辑的复杂度。下面针对每一点详细说下我的感悟。

 

 

一,编码思维的转变。

Android开发属于客户端开发,在编码思维上与IOS,WEB网页类似,主要工作是获取数据,展示数据,或者对用户的操作作出响应,归根来说操作的对象都是view。Java属于服务端开发,操作的对象是数据,对数据的增删改查操作,将用户提交的数据经过处理后保存到数据库,或者数据从数据库中取出来经过处理后传递给用户。

二,项目框架的学习

Android开发的APP运行在Android系统的手机上,Java项目开发的项目需要运行在Tomcat等服务器容器中,故首先要学习Tomcat的组件Servlet的使用,Servlet的作用是向客户端提供接口。但实际项目开发中很少会直接使用Servlet,而是使用封装的框架。我目前学习的框架有两个,一个是封装Servlet的SpringMVC,另一个是封装Filter的Strus2.

Java项目除了对客户端提供接口外另一个大功能是操作数据库,操作数据库的方式有很多,列举如下:
1,JDBC:JDBC的全称是Java DataBase Connectivity,即是使用java语言连接数据库。这个是连接数据库的最底层使用。
2,DBCP:DBCP的全称是DataBase connection pool,即是数据库连接池。由于项目中对数据库的连接是个频繁操作,每次都创建连接关闭连接很消耗资源,所以建议使用DBCP。
3,JPA协议框架
JPA的全称是Java Persistence AP,意思是java持久层API。JPA,并不是一个框架,而是一个协议,实现思想是ORM,即对象关系映射,即把数据库字段与业务实体类对象的字段做一个关系映射,把对数据库的操作变成面向对象的操作,不需要些sql语句。根据JPA协议实现的数据库操作框架有:
a,Hibernate
b,Open JPA
c,Spring Data JPA
d,ClipseLink
e,Toplink
4,MyBatis框架:它对JDBC的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。MyBatis是我目前感觉最好用的框架,比起JPA框架它需要些sql语句,但它更随意,不受太多限制,尤其在多表操作时完全优于JPA框架。
另外一个非常重要的框架是Spring,几乎在所有的Java项目中都会使用这个框架。Spring是一个容器,可以把注册的类创建对象,然后放入到Spring容器中,不需要我们再使用new创建对象。并可以给对象的字段进行对象注入。

最后一个框架是SpringBoot框架,这个框架集成了Spring和SpringMVC,而且让配置更简单,是一个很受欢迎的框架,目前我们公司的新项目正在使用的该框架。

三,数据库的学习

数据库操作在客户端很少使用,所以数据库操作对我是一大弱项。基本的sql语句还好说,多表联查就有点困难了,然后就各种网上找资料学习。我们公司用的是oracle数据库,还涉及到触发器,存储过程,索引的使用,等等,当时真是遇到很多困难,还好一切都过来了。当你走过之后就会感觉满满的成就感。

我们公司的Java项目有6个,这其中不仅用到oracle数据库,还有mysql,还有非关系型数据库中的mongodb和Redis。

关于数据库的另一个难度是表结构设计。今年春节后公司开始一个新项目,前期需要做表结构设计,这个工作真是考察开发经验的时候。网上有很多关于表结构设计的准则或依据,我个人经验有限,这儿就不发表看法了。

四,Tomcat及项目部署的学习

Java项目都运行在Tomcat中,所以必须要了解Tomcat,了解Tomcat的基本参数配置,启动和关闭等等操作。
Java项目一般需要运行在Linux系统中,所以要学习Linux基本操作。

Java项目是服务端项目,此时的JVM比Android项目负载大,所以需要JVM的参数配置。

五,项目业务逻辑的复杂度。

在Android项目中以页面为模块,页面与页面之间逻辑关联较小。而Java项目的业务逻辑复杂度应该是Android项目的10倍以上。Java属于服务端开发,简单说是对数据的增删改查操作,但很少有这么简单的逻辑,往往一个操作要调用几十个乃至上百个方法。我们公司的项目是门户网站,小编点击发布文章后会首先将文章保存到数据库,然后将文章id加入到发布队列,根据文章设置的发布时间判断什么时间发布。文件发布即是生成静态的文章页面,首先根据选取的节点获取节点配置的模版,然后根据模版代码和静态化技术生成html标签。一个文章网页除了文章外还需要加载其他模块,比如最新文章列表,最热文章列表,广告块等等。小编的这一个动作我当时看了两天才把代码梳理清楚。

另外我们公司Java项目有6个,有5个都是前后端不分离的,对于这种java项目还需要学习JSP,HTML,CSS,JavaScript等知识。

除以上之外Java开发还需要考虑并发量,集群,分布式,进程间通信,服务端稳定性等等方面。要想成为一个合格的Java开发者,仍然任重道远。

转入java之后一直在学习新知识,在学新知识的时候做了很多笔记,但由于感觉自己理解的不太深入,怕理解偏差的地方,所以一直没有写到线上的博客上。春季后我们公司开始一个新项目,现在新项目已经完成了第一个版本的开发,在项目中对学习的知识又加深了理解,所以打算对JAVA知识做一个整理,并把整理后到内容写成博客,望与志同道合之士共同学习交流。





 

你可能感兴趣的:(我的Java之路)