计算机系统开发:包括硬件开发和软件开发。
软件开发可以分为系统级开发和应用级开发。
系统级开发:如开发操作系统、驱动程序、嵌入式系统开发: 更多是用:汇编、C、C++等底层语言、编写操作系统、编译器、驱动程序、底层系统功能、要求深厚的数据结构与算法功底。
应用级开发:企业级应用开发、电信级应用开发、PDA应用开发... ...
Java企业级应用开发、.Net企业级应用开发、Python/ruby/php企业级应用开发。
这里重点说Java企业级应用开发。
其实Java是分为:J2ME、J2SE、J2EE(也就是Java企业级应用开发),当前java企业开发大多数采用Spring框架。
成熟的企业级开发可能转变为工业级开发
http://www.springsource.org/projects
scalability-availability-stability-patterns
研读Spring代码:优先阅读:DI、AOP、JDBC Template、Spring的一些架构和设计模式等
Google的Guice是类似于Spring的容器,也支持IoC/DI等
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.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