轻量级Java EE企业应用实战_Struts 2_Spring3_Hibernate(第三版).pdf
Java EE 组件
- Domain Object 领域对象
- DAO-->EAO
- 业务逻辑层
- 控制器层
- 表现层
为什么是Java EE ?
JSP和Servlet关系
为什么要使用框架
一、什么是软件开发?
计算机系统开发:包括硬件开发和软件开发。
软件开发可以分为系统级开发和应用级开发。
系统级开发:如开发操作系统、驱动程序、嵌入式系统开发: 更多是用:汇编、C、C++等底层语言、编写操作系统、编译器、驱动程序、底层系统功能、要求深厚的数据结构与算法功底。
应用级开发:企业级应用开发、电信级应用开发、PDA应用开发... ...
二、企业级应用开发
Java企业级应用开发、.Net企业级应用开发、Python/ruby/php企业级应用开发。
这里重点说Java企业级应用开发。
其实Java是分为:J2ME、J2SE、J2EE(也就是Java企业级应用开发),当前java企业开发大多数采用Spring框架。
成熟的企业级开发可能转变为工业级开发
三、Java企业级开发Spring框架介绍
http://www.springsource.org/projects
scalability-availability-stability-patterns
研读Spring代码:优先阅读:DI、AOP、JDBC Template、Spring的一些架构和设计模式等
Google的Guice是类似于Spring的容器,也支持IoC/DI等
1 Spring基础核心功能:
Spring框架核心功能: IoC(Inversion Of Control)/DI(Dependency Injection)、AOP(Aspect Oriented Programming)、
理论依据:Martin Fowler的《企业应用架构模式》, 《Expert One-on-One.J2EE.Design.and.Development》《Expert_J2EE_Development_Without_EJB》
实际使用手册:Spring Reference、 Spring API、
实际项目:Spring自带若干个例子
可以与SQL、NoSQL、Hadoop很好集成
2 Spring 新增核心项目介绍:(企业数据框架/企业数据架构)
2.1Spring Data 项目: 《Spring Data: Modern Data Access for Enterprise Java》O'Reilly
Spring Data - Apache Hadoop
可以与SQL、NoSQL、Hadoop很好集成
Spring Data项目:
Category | Sub-project | |
Relational Databases | JPA | Spring Data JPA - Simplifies the development of creating a JPA-based data access layer |
JDBC Extensions | Support for Oracle RAC, Advanced Queuing, and Advanced datatypes. Support for using QueryDSL with JdbcTemplate. | |
Big Data | Apache Hadoop | The Apache Hadoop project is an open-source implementation of frameworks for reliable, scalable, distributed computing and data storage. HDFS and M/R 、Hive、Pig、Cascading、HBase |
Splunk/Lucene | ||
Data-Grid | GemFire | VMware vFabric GemFire is a distributed data management platform providing dynamic scalability, high performance, and database-like persistence. It blends advanced techniques like replication, partitioning, data-aware routing, and continuous querying. |
HTTP | REST | Spring Data REST - Perform CRUD operations of your persistence model using HTTP and Spring Data Repositories. |
Key Value Stores | Redis | Redis is an open source, advanced key-value store. |
Document Stores | MongoDB | MongoDB is a scalable, high-performance, open source, document-oriented database. |
Graph Databases | Neo4j | Neo4j is a graph database, a fully transactional database that stores data structured as graphs. |
Column Stores | HBase | Apache HBase is an open-source, distributed, versioned, column-oriented store modeled after Google' Bigtable |
Common Infrastructure | Commons | Provides shared infrastructure for use across various data access projects. General support for cross-database persistence is located here |
Grails Mapping | Provides a database unified object mapping framework that is portable across different databases for Grails. |
Spring Data GemFire
2.2 Spring Integeration 项目:
Spring AMQP项目:集成消息机制
Spring BlazeDS Integration:Spring集成Flex
《Enterprise Integration Patterns》http://www.eaipatterns.com/
Message Driven Architecture with Spring
spring Integration Books:
Mark Fisher, Jonas Partner, Marius Bogoevici, Iwein Fuld: Spring Integration in Action
Madhusudhan Konda: Just Spring Integration
Dr. Mark Lui, Mario Gray, Andy Chan, Josh Long: Pro Spring Integration
ESB 消息中间件 RabbitMQ.ActiveMQ... ...
可以与SQL、NoSQL、Hadoop很好集成
2.3 Spring Batch 项目
Java6: ExecutorService\ Java7: ForkJoinPool \ Erlang/Scala: Actor & Message \ Go:goroutine\Grand Central Dispatch:Block&Queue(iOS)\GridGain:Compute Grid \ Hadoop:MapReduce
后台批处理业务、可以与SQL、NoSQL、Hadoop很好集成
2.4 还有一些其他项目:
Spring Mobile 与手机相关:Android
Spring Social 与社交相关:微博 Twitter
Spring MVC/Spring Web Flow 与 界面相关
Spring Web Services 与Web service相关
Spring Roo Java开发者快速构建工具
Spring Security 安全相关
Spring LDAP :目录访问
3.1 IaaS(Infrastructure as a Service,IaaS)基础设施即服务:
提供给消费者的服务是对所有设施的利用,包括处理、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、储存空间、部署的应用,也有可能获得有限制的网络组件(例如,防火墙,负载均衡器等)的控制。
如:▪ EC2 ▪ Eucalyptus ▪ FlexiScale ▪ GoGrid ▪ Nimbus ▪ OpenStack ▪ Rackspace Cloud ▪ VPC
3.2 PaaS(Platform as a Service,PaaS)平台即服务:提供给消费者的服务是把客户采用提供的开发语言和工具(例如Java,python, .Net等)开发的
如:▪ App Engine ▪ Windows Azure ▪ Engine Yard ▪ Force.com ▪ Heroku ▪ MTurk ▪ RightScale ▪ Amazon S3 ▪ SimpleDB ▪ SQS
Google App Engine、Amazon Elastic Beanstalk 、Cloud Foundry、Hadoop、Storm
3.3 SaaS(Software as a Service,SaaS)软件即服务:
提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器。消费者不需要管理或控制任何云计算基础设施,包括网络、服务器、操作系统、存储等等;
如:▪ SAP OnDemand Solutions ▪ Google Apps ▪ Microsoft Online ▪ NetSuite ▪ SalesForce
3.4 虚拟机:VMware(VMWare ACE)、Virtual Box和Virtual PC
3.5 CloudFoundry 开源的云(共有、私有、微型演示):量子恒道、用友云、vFabric Data Director、Serengeti、mopaas、openstack、
3.6 通用应用: 日志分析/用户行为分析、机器学习/数据挖掘、网页抓取/文字处理、抽取/转换/加载(ETL)、图像处理、数据备份... ...
3.7 行业应用: 科学研究领域、医疗领域、商业领域、制造业、智慧城市、 金融服务、电子商务、生物医药、电信、科技、大众传媒、搜索引擎、视频... ....
3.8 BigData: 分布式系统、云计算、物联网
大数据的获取、传输、存储、质量管理、支持求解等方面。所有的五个阶段里面的问题集中起来,称之为大数据计算问题的空间。
3.8.1 The Big Data Problem:
1 Capture: Collect data from all source - structured and unstructured data (Log files\ Exhaust Data\Social Media\Sensors, devices\DB data)
All speeds batch、async、streaming、real-time
2 Process: Transform, refine, aggregate,analyze, report
3 Exchange: Deliver data with enterprise data systems
Share data with analytic applications and processing
一、下定决心
2020年7月1日,是我下“决心”要开始学习Java EE企业级编程的日子。为什么要用“决心”这么强烈感情色彩的词汇呢,是因为学习向来就不是一个简简单单一蹴而就的事情,尤其像Java EE这样的高级架构和编程技能的学习,会占用你大量的时间和精力。我自己也会经过一番激烈的思想斗争,到底拿出这么多时间去学习一套如此高级的知识领域,真的会有收货吗?慢慢地,心里越来越坚定,与其在这胡思乱想,还不如把时间省出来都花在学习上来得更充实,所谓吾尝终日而思矣,不如须臾之所学也。所以,下定决心后就不要再迟疑,开干!(不对,是开学!)
二、当前学习成果汇报
跟大家汇报一下我当前的学习成果。自2020年7月1日截止到2020年8月14日,我工作日每天拿出3个小时来学习,每天学习到晚上10:30,周六学习一天,周日休息,至今据不完全统计投入了150+个小时。这段时间我共学习并掌握了:
- Java SE标准库编程
- 反射
- Junit单元测试
- MySQL数据库
- JDBC
- HTML
- CSS
- JavaScript
- BootStrap
- Servlet
- Filter
- Listener
- AJAX
- JSP
- Maven
- MyBatis
- Docker
- Spring基础
- Spring Boot基础
等众多知识和技能。我感到特别充实,正应了那句话,付出总会有回报。接下来我还会继续深入学习Spring框架、SpringMVC框架、Spring Boot高级、Vue、持续集成与容器管理、K8S、自动化测试等在工作中都会用到的众多高级架构和相应领域的知识。我始终相信,艺多不压身,多学习总是有好处的。
三、学习Java EE对我工作的帮助
把学习和工作结合起来,会更加促进学习的积极性。学习Java EE这段时间以来,明显对我自己的工作也产生了很大的积极作用。比如:
- 让我对开发和部署的整体流程有了体验式的认知,与大家的对话会产生更多的共鸣。
- 作为敏捷教练,Java EE及相关知识会帮我在推动自动化测试开发,持续集成和持续部署的工作方面提供极具价值的技术支撑。
- 让我更加深切体会当前团队遇到的痛点,协助我提出更加落地的解决方案。
我相信,随着学习的继续深入,它对我的工作将会继续产生积极正向的推动作用。
四、学习心得分享
和大家分享一下这一个多月我的学习心得。
做任何事情之前,给自己设定一个目标特别重要。我的心得是除了要设定一个特别宏达的目标外,还要把大的目标拆分成更小的目标,一开始的目标越小越好,因为越小越容易达成,就越容易获得成就感,也就越容易坚持下去。比如我一开始给自己定的目标就是两周内先把Java SE基础部分拾起来。等学习玩基础部分之后,再定下一个目标,再在两周之内把Java SE的高级部分学完。我没有给自己过大的压力,就这样步步为营,一步一个脚印的坚持到了现在,并且还会继续坚持下去。
当把目标定下来之后,一定要保持初心,不要轻言放弃,不要动摇你的决心。学习最困难的还是贵在坚持,在这个过程中,你很可能会觉得无聊,觉得学到的东西暂时用不到,觉得和我本职工作没关的内容学来就是浪费时间。每当这个时候我就告诉自己,想想初心,不用胡思乱想,多学点东西没有任何坏处,与其吾尝终日而思矣,不如须臾之所学也嘛。慢慢地,也就这么学过来了。
我在前期学Java SE的时候投入了特别大的精力,而且重点学习了面向对象中多态的思想和编程技巧,网络编程的基本方法和注意事项以及Java多线程的实现方式等。我相信越是基础知识就越要重视,因为后续的高级架构中一定都是基于基础知识来构建的。事实证明就是如此,比如在学习解耦合思想的时候,在表现层的实现类中用服务层的接口来定义对象实现解耦,就是用了多态的思想。如果你不懂基本的多态知识,就根本没有办法理解多态如何实现了解耦合。基础知识,怎么重视都不为过。
把学习内容分布到每一天里,不要尝试一下子都挤压到周末学。压迫式学习既不会有好的学习效果,还会影响学习士气。我会每天拿出3个左右小时的时间全身心投入到学习中,每天都进步一点点,坚持2周左右就养成习惯了。
在整个学习过程中,我会时不时“恬不知耻”地把学习状态和成果发布到个人朋友圈中。一来是炫耀一下,让自己更有成就感J。当然更重要的是为了打卡,让多更人监督我的学习,获得更多朋友的鼓励和支持,这样我就更不好意思放弃了。如果你也正在学习,请炫耀出来,我们一起督促前行吧。
给自己设定一个学习完成标准特别重要。就像工作中的验收标准一样,我们学习到什么程度才算是学完呢,是看一遍讲义吗,还是听完了教学视频就算完成了。每个人对自己的要求不一样。我对自己这样要求:
强烈建议,在学完基础知识后,请尽可能去学习公司当前正在使用的架构知识,比如Spring Boot,Vue等。一来是和实际工作找到更好的契合点,二来如果遇到什么学习问题,还能请教身边的专家们,每每从专家同事这里得到答案后,都有一种醍醐灌顶的感觉,让我对公司的开发和部署以及运维的过程有了更深入的了解,更加有助于我和团队之间开展工作。这就是一个让学习效率事半功倍的方法。
学习其实是一个不断提出质疑与解决质疑后增长知识的过程。在学习的过程中,一定要有“大胆假设,小心求证”的思想。越是随着学习的深入,我就越是对公司中真实的工作框架和方法产生好奇感,于是脑海中就会迸发出很多大胆的假设或问题,比如:
然后我会带着这些问题去找专家们请教,各个击破,这个过程特别有成就感。
好了,以上就是我想和大家分享的学习心得,最后再送给大家几句话共勉:
让我们找到更多志同道合的小伙伴,一起学习进步吧。
转自:http://blog.csdn.net/phphot/article/details/2171421
我们知道中间件有很多种规范以及相关的模型
最流行的一个是j2ee还有一个是.net
那么各大公司关于这两套规范各有什么产品以及周边呢?
j2ee:
黄金组合
操作系统:Solaris
应用服务器:Weblogic
数据库:Oracle
开发工具:JBuilider/IntelliJ IDEA
优点:性能一级棒,大企业大公司做系统的首选,世界五百强几乎都是这套组合
缺点:极贵
超级组合,也是最安全最酷的黄金组合,硬件采用SUN公司的机器
但是SUN的服务器很贵,同等价格不如去买IBM的机器
SUN的服务器支持Solaris的效果自然不用说,Solaris号称是世界上最安全的操作系统
Oracle也是世界上最安全,性能最优的数据库,Weblogic是当今性能最优的appserver
JBuilder和IDEA各有所长,JBuilder是Borland公司的招牌之一
是当今世界上最流行的java IDE,用delphi写的,但网络上评价似乎不是很好
IDEA拥有插件功能,界面在所有java IDE中最为漂亮,东欧人开发的产品
东欧人严谨的作风在这个产品上体现得尤为突出,用java写的
IDEA甚至号称自己被业界公认为是最好的IDE//个人保留意见,没有最好只有更好
但我用JBuilder的时候发现了不少bug,而至今还没有在IDEA上发现什么bug
个人推荐IDEA
价格方面,Solaris开源,但是SUN的服务器比较贵,Weblogic最高是34万
oracle标准版要18.6万,企业版要49万,JBuilder要2.7万左右
IDEA零售价大概是500美金,也就是5000多元
另外,虽然理论上这些产品的综合性能要高于其他选择,但是必须看到
由于产商之间的利益冲突,比如oracle也有自己的appserver,但是性能不怎样
使得这几种产品之间协作的性能要比预想中的要差一点点
--
开源系列
操作系统:-
应用服务器:JBoss
数据库:MySql
开发工具:Netbeans
优点:便宜,性能未必最佳,但是对付中小企业足够了
缺点:出了问题自己抗吧
嗯,这是java阵营最大的特色,免费免费,还有在开发工具这一栏Eclipse也是免费的
但后面要说,算了,换个有代表性的开源产品来
tomcat仅有web容器而没有ejb容器,而jboss已经集成了tomcat
也就是说下载了jboss之后,启动的同时也就启动了tomcat
jboss在tomcat基础之上多加了一个ejb容器,使得jboss+tomcat成为和weblogic
websphere之外又一个得到广泛应用的appserver
现在大概是这样,中小型企业多用jboss,如果应用小一点就用tomcat
只有给那些大型企业做的项目,才会花钱去上一个weblogic或者websphere
mysql也是开源的数据库,做得非常不错,如果系统对数据库要求不高
或者安全要求不是非常严格,mysql是一个非常不错的选择
开发工具方面,netbeans是sun公司极力推广的一种IDE
听说在北美市场使用量已经超过eclipse了
操作系统,软件再不用钱,服务器也要钱,看这台机器上跑什么操作系统就用什么了
--
IBM套餐
操作系统:Linux
应用服务器:Websphere
数据库:DB2
开发工具:Eclipse/WebSphere Studio
优点:服务好,IBM可以提供全套服务,也可以替客户承担风险
缺点:把机器数据全部交给IBM,安全什么的都由不得你了
呵呵,IBM全套产品,甚至包括硬件设备IBM的服务器
由于是一个公司的产品,各产品之间的协作自然不错
价格方面,Linux,DB2,Eclipse都是开源产品,Websphere目前零售价是33.8万人民币
IBM服务器不错,可以考虑
--
.net:
微软阵营
操作系统:Windows
应用服务器:.net应用服务器(好像叫IIS)
数据库:SqlServer
开发工具:MS Visual Studio
优点:客户端的用户体验良好,和客户端诸多微软产品的兼容性强
缺点:离开了微软,寸步难行,和其他任何一家公司的产品都不兼容
微软的东西,怎么说呢,太专横了
微软所有的东西都是围绕着windows来做的
.net其实已经可以实现跨平台了,但是微软出于自身商业考虑
在其应用服务器跨平台的实现上设置了种种障碍
而且针对windows,微软做了大量的优化,可以这么看
.net就是与windows捆绑的一套产品
所以有些人说,微软的产品离开了windows,就是渣
而且.net开源选择也少,安全性方面考虑,windows本身就有一堆补丁要打了
sqlserver也不安全,至于.net到底安全不安全我不清楚,毕竟我没怎么用过
但整体考虑,感觉.net不是大企业的首选,鉴于其浓厚的商业背景
也不是中小企业的首选,但是必须看到
客户端也就是微机pc市场已经完全被windows所垄断
所以在一些快速开发,还有和微软产品兼容性要求较高的领域,.net还是比较有市场的
最后一个visual studio对它之前的版本兼容,且支持c,c++,c#,vb等语言
在其传统领域,比如写一些桌面软件等客户端应用上,.net还是第一选择
--
最后要说明的是
这些组合不是固定不变的
由于J2EE得到了绝大多数IT企业的支持以及JAVA跨平台的特性
我们可以自由地定制个性化的组合
比如我可以选择windows+jboss+eclipse+oracle
也可以选择solaris+websphere+IDEA+mysql
等等,这些自由组合都是可以的,但是有一点必须说明
微软的东西,一般来说离开了windows就不能用
比如你选择了.net应用服务器,那操作系统就必须是windows
你选择了sqlserver,那就必须在windows上用
还有就是遵循j2ee规范的所有的组件都可以在不同的应用服务器上互相移植
比如你可以在测试的时候用jboss
而在正式投产上线的时候使用websphere,只需要在配置文件中作相应改动即可
轻量级Java EE企业应用实战_Struts 2_Spring3_Hibernate(第三版).pdf
Java EE 组件
- Domain Object 领域对象
- DAO-->EAO
- 业务逻辑层
- 控制器层
- 表现层
为什么是Java EE ?
JSP和Servlet关系
为什么要使用框架
转载于:https://www.cnblogs.com/wxc-kingsley/p/java-001.html