程序人生之常见术语与名词解释
SDK(软件开发工具包 Software Development Kit)最熟悉的就是JDK。
IDE (集成开发环境 itegrity development environmental) 比如eclipse,idea。
JDK(Java软件开发工具包 Java development toolkit)包含了Java的运行环境(JRE)和Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JRE(Java运行环境 Java Runtime Environment)其包含JVM和Java运行时类库(核心类库和支持文件)。
JVM(Java虚拟机 Java Vitual Machine)整个Java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
API(应用程序编程接口 Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 运行Java程序时,虚拟机装载程序的class文件所使用的Java API class文件。所有被装载的class文件(包括从应用程序中和从Java API中提取的)和所有已经装载的动态库(包含本地方法)共同组成了在Java虚拟机上运行的整个程序。 在一个平台能够支持Java程序以前,必须在这个特定平台上明确地实现API的功能。为访问主机上的本地资源,Java API调用了本地方法。由于Java API class文件调用了本地方法,Java程序就不需要再调用它们了。通过这种方法,Java API class文件为底层主机提供了具有平台无关性、标准接口的Java程序。对Java程序而言,无论平台内部如何,Java API都会有同样的表现和可预测的行为。
Java语言根据不同的使用方向分为三个版本。
JavaSE(J2SE)(标准版 Standard Edition),主要用于桌面应用软件的编程;(不是C语言爸爸的对手)
JavaME(J2ME)(微缩版 Micro Edition)主要应用于嵌入式系统开发,如手机和PDA的编程;(所以转写andriod吧)
JakartaEE-第三版本(javaEE-第二版本)(J2EE-第一版本)(企业版 Enterprise),主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。(这就是主战场啦)
J2EE主要包括以下这些技术: 1、 Servlet(一种CGI) 2、JSP 3、EJB 4、JDBC
JSP(Java Server Page), 一种实现普通静态HTML和动态页面输出混合编码的技术。本质上仍是servlet, 。在运行时态,JSP将会被首先转换成Servlet,并以Servlet的形态编译运行,因此它的效率和功能与Servlet相比没有差别,一样具有很高的效率。
EJB(Enterprise Beans, 企业级JavaBean)定义了一组可重用的组件:Enterprise Beans。开发人员可以利用这些组件,像搭积木一样建立分布式应用。
JDBC(Java DataBase Connectivity,java数据库连接)用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口(加载驱动),并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。
CGI通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准。
JSTL(JSP StandardTagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库.主要是简化JSP和WEB应用程序.
MVC(Model View Controller),是模型(model)-视图(view)-控制器(controller)的缩写。
OOP(Object Oriented Programming,面向对象编程)。
AOP(Aspect Oriented Programming,面向切面编程)。
IOC(Inversion of Control, 控制反转),又名依赖注入(Dependency Injection)。简称DI。简单理解就是将获取依赖对象的控制权交给IOC容器(this类中(对象)不再主动去new依赖对象,只是被动地接受)。
DTO(Data Transfer Object,数据传输对象),用于数据的远程调用方面。
DAO(Data Access Object 数据访问接口)又名持久层,数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。
SQL(结构化查询语言 Structured Query Language)。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。分为以下四类:
DDL(数据定义语言 Date Definition Language)用来创建数据库中的各种对象-----表、视图...
DQL(数据查询语言 Date Query Language)基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块
DML(数据操纵语言 Date Manipulation Language)对表中数据的修改、插入、删除
DCL(数据控制语言 Date Control Language)用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有 DBA等人员才有权力执行DCL。
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务--------(Transaction)的数据库,必须要具有这四种特性。
XML(Extensible Markup Language,可扩展标记语言),是对超文本标记语言(HTML)的补充。
------------------------------------
容器:充当中间件的角色。
WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接与容器中的环境变量接口交互,不必关注其它系统问题。主要由WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。
WEB容器和EJB容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。
RMI/IIOP:远程方法调用internet对象请求中介协议,他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。
JNDI:JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
JMS:JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
JAVAMAIL:JAVA邮件服务。提供邮件的存储、传输功能。他是编程中实现邮件功能的核心。相当MS中的EXCHANGE开发包。
JTA:JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
JAAS:JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
EAI:企业应用集成。是一种概念,从而牵涉到好多技术。J2EE技术是一种很好的集成实现。
-------------------
EP:设备提供商, 什么情况会遇到呢,就是例如你有款游戏,想和手机厂商合作,什么中兴、华为、联想、oppo、金立、等手机厂商合作,他们就称是EP。
AP:应用提供商,其实他们就是CP,基本上都是运营商才会在自己后台这样称呼自己。
SP:服务提供商,SP是不可缺少的一环。好的内容和应用是启动市场的关键。SP是移动互联网服务提供商,什么情况会使用到他们呢,例如国内的山寨机,之前一大堆做SP起家的公司,也就是大家熟悉的暗扣,游戏内置一个付费产品,用户点击付费,通过移动服务端收取话费费用。
CP:内容提供商,在游戏行业,CP是最经常出现的,就是游戏的原始制作者,他们会把游戏给其他公司代理,然后代理公司帮他们推,以6/4 或者7/3等等的形式分成,CP只需提供内容,也就是整个游戏除了推广之外,CP都需要提供,包括游戏截图、游戏简介等等。
CAP理论:CAP理论提出就是针对分布式数据库环境的,所以,P这个属性是必须具备的。
P就是在分布式环境中,由于网络的问题可能导致某个节点和其它节点失去联系,这时候就形成了P(partition),也就是由于网络问题,将系统的成员隔离成了2个区域,互相无法知道对方的状态,这在分布式环境下是非常常见的。
因为P是必须的,那么我们需要选择的就是A和C。
大家知道,在分布式环境下,为了保证系统可用性,通常都采取了复制的方式,避免一个节点损坏,导致系统不可用。那么就出现了每个节点上的数据出现了很多个副本的情况,而数据从一个节点复制到另外的节点时需要时间和要求网络畅通的,所以,当P发生时,也就是无法向某个节点复制数据时,这时候你有两个选择:
选择可用性 A(Availability),此时,那个失去联系的节点依然可以向系统提供服务,不过它的数据就不能保证是同步的了(失去了C属性)。
选择一致性C(Consistency),为了保证数据库的一致性,我们必须等待失去联系的节点恢复过来,在这个过程中,那个节点是不允许对外提供服务的,这时候系统处于不可用状态(失去了A属性)。最常见的例子是读写分离,某个节点负责写入数据,然后将数据同步到其它节点,其它节点提供读取的服务,当两个节点出现通信问题时,你就面临着选择A(继续提供服务,但是数据不保证准确),C(用户处于等待状态,一直等到数据同步完成)。
---------------------
O2O即Online To Offline(在线离线/线上到线下),是指将线下的商务机会与互联网结合,让互联网成为线下交易的平台,这个概念最早来源于美国。O2O的概念非常广泛,既可涉及到线上,又可涉及到线下,可以通称为O2O。主流商业管理课程均对O2O这种新型的商业模式有所介绍及关注。2013年O2O进入高速发展阶段,开始了本地化及移动设备的整合和完善,于是O2O商业模式横空出世,成为O2O模式的本地化分支。
B2C是Business-to-Customer的缩写,而其中文简称为“商对客”。“商对客”是电子商务的一种模式,也就是通常说的直接面向消费者销售产品和服务商业零售模式。这种形式的电子商务一般以网络零售业为主,主要借助于互联网开展在线销售活动。B2C即企业通过互联网为消费者提供一个新型的购物环境——网上商店,消费者通过网络在网上购物、网上支付等消费行为。
软件架构:软件采用B/S架构,软件的可执行程序及相关数据库都部署在服务器端,用户通过客户端浏览器无需安装直接使用软件。
B2C(Business to Consumer)就是我们很经常看到的供应商直接把商品卖给用户。
其中,当当作为在美国上市的B2C网上商城[1] ,主要提供图书音像、服装鞋靴、美妆饰品、手机数码、箱包家纺、食品家电等品类,以供更多的消费者挑眩
网络购物有两种模式:一种是B2C模式,即商品和信息从企业直接到消费者;另一种是C2C,即商品和信息从消费者直接到消费者,俗称“网上开店”,例如淘宝网。数据显示,截至2006年年底,网络购物总体交易额达到312亿元,B2C和C2C总体交易额分别为82亿元和230亿元,C2C市场规模同比增加85%,增长速度超过网络购物的整体增速。
B2B(也有写成 BTB,是Business-to-Business的缩写)是指企业对企业之间的营销关系,它将企业内部网,通过 B2B 网站与客户紧密结合起来,通过网络的快速反应,为客户提供更好的服务,从而促进企业的业务发展。
B2B(Business to Business)是指商家与商家建立的商业关系. 例如我们在麦当劳中只能够买到可口可乐是因为麦当劳与可口可乐中的商业伙伴的关系. 商家们建立商业伙伴的关系是希望通过大家所提供的东西来形成一个互补的发展机会,大家的生意都可以有利润。
C2C(Consumer to Consumer)实际是电子商务的专业用语,是个人与个人之间的电子商务。c2c即消费者间 ,因为英文中的2的发音同to,所以c to c简写为c2c。c指的是消费者,因为消费者的英文单词是Customer(Consumer),所以简写为c,而C2C即 Customer(Consumer) to Customer(Consumer)。C2C的意思就是个人与个人之间的电子商务。比如一个消费者有一台电脑,通过网络进行交易,把它出售给另外一个消费者,此种交易类型就称为C2C电子商务。C2C,客户之间自己把东西放上网去卖。
C2B(Consumer to Business),这个概念比较新,意思是由客户选择自己要些什么东西,要求的价格是什么,然后由商家来决定是否接受客户的要求. 假如商家接受客户的要求,那么交易成功; 假如商家不接受客户的要求,那么就是交易失败。
M2C(Manufacturers to Consumer),生产厂家(Manufacturers)直接对消费者(Consumers)提供自己生产的产品或服务的一种商业模式,特点是流通环节减少至一对一,销售成本降低,从而保障了产品品质和售后服务质量。
I2C(Info to Consumer),信息对消费者,如:团购网提供打折信息,消费者对其发动的电子商务购买!当达到一定人数即可成交的信息提供电子商务模式。
------------------------------
B2B:企业间的EC
B2C:企业对个人用户的EC
C2C:个人对个人的EC
C2B:个人对商家的EC
M2C:厂家对个人的EC
I2C:信息提供对消费者的EC
注:EC是指电子商务
--------------------------------
PO(persistant object) 持久对象:在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操作.
VO(value object) 值对象:通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已.但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递.
BO(business object) 业务对象:从业务模型的角度看,见UML元件领域模型中的领域对象.封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作.
POJO(plain ordinary java object) 简单无规则java对象:纯的传统意义的java对象.就是说在一些Object/Relation Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法.我的理解就是最基本的Java Bean,只有属性字段及setter和getter方法!.
DAO(data access object) 数据访问对象:是sun的一个标准j2ee设计模式,这个模式中有个接口就是DAO,它负责持久层的操作.为业务层提供接口.此对象用于访问数据库.通常和PO结合使用,DAO中包含了各种数据库的操作方法.通过它的方法,结合PO对数据库进行相关的操作.夹在业务逻辑与数据库资源中间.配合VO, 提供数据库的CRUD操作...
DTO (Data Transfer Object)数据传输对象:主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO
O/R Mapper 对象/关系 映射:定义好所有的mapping之后,这个O/R Mapper可以帮我们做很多的工作.通过这些mappings,这个O/R Mapper可以生成所有的关于对象保存,删除,读取的SQL语句,我们不再需要写那么多行的DAL代码了.
实体Model(实体模式)
BOF(Business Object Framework )业务对象框架
SOA(Service Orient Architecture)面向服务的设计......
---------------------
未完待续......