一、什么是软件开发?

计算机系统开发:包括硬件开发和软件开发。

软件开发可以分为系统级开发和应用级开发。

系统级开发:如开发操作系统、驱动程序、嵌入式系统开发: 更多是用:汇编、C、C++等底层语言、编写操作系统、编译器、驱动程序、底层系统功能、要求深厚的数据结构与算法功底。

应用级开发:企业级应用开发、电信级应用开发、PDA应用开发... ...


二、企业级应用开发

      Java企业级应用开发、.Net企业级应用开发、Python/ruby/php企业级应用开发。

      这里重点说Java企业级应用开发。

     其实Java是分为:J2ME、J2SE、J2EE(也就是Java企业级应用开发),当前java企业开发大多数采用Spring框架。

     成熟的企业级开发可能转变为工业级开发

三、Java企业级开发Spring框架介绍

  研读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 Spring云中漫步

      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