160 likes | 482 Views
고급자바프로그래밍 (Advanced Java Programming). 강원대학교 컴퓨터학부 2012 년 가을학기 담당교수 정충교. Java. 1995 발표 , Sun Microsystems "write once, run anywhere" ( WORA ) James Gosling 등 J2SE , J2EE . J2ME Java Community Process ( JCP ) 2007 GNU General Public License 2010 Oracle Corporations
E N D
고급자바프로그래밍(Advanced Java Programming) 강원대학교컴퓨터학부 2012년 가을학기 담당교수정충교
Java • 1995 발표, Sun Microsystems • "write once, run anywhere" (WORA) • James Gosling 등 • J2SE, J2EE. J2ME • Java Community Process (JCP) • 2007 GNU General Public License • 2010 Oracle Corporations • 10M users, 1Gmachines
Java • simple, object-oriented and familiar • robust and secure • architecture-neutral and portable • high performance • interpreted, threaded, and dynamic
Java • JDK 1.0 (January 23, 1996) • JDK 1.1 (February 19, 1997) • J2SE 1.2 (December 8, 1998) • J2SE 1.3 (May 8, 2000) • J2SE 1.4 (February 6, 2002) • J2SE 5.0 (September 30, 2004) • Java SE 6 (December 11, 2006) • Java SE 7 (July 28, 2011)
Object-Oriented Programming • Dynamic • Encapsulation • Polymorphism • Inheritance
Spring • 개발이 즐겁다! • software 생산성과 품질 • 객체지향 프로그래밍 원칙 충실 • 비침투적 구조 (POJO) • Plain Old Java Object
객체지향 프로그래밍 원칙 충실 • 유연성 • 수정 없이도 여러 상황, 변하는 상황에 대처 (다형성, 동적바인딩에 의해 구현됨) • 재활용성 • 클래스를 변경 없이 재활용 • 추가 기능, 기능 수정 필요시 기존 클래스 변경 없이 클래스 확장을 통해 대처 • 보안성 • 캡슐화를 통해 필요한 정보만을 외부에 노출
용어 • OCP (Open/Closed Principle) • 수정에는 닫혀 있고 확장에는 열려있다.
프레임워크(framework) 특징 (library와 비교할 때) • IoC (inversion of control) • 전체적인 프로그램 실행이 플레임워크에 의해 제어됨 • 기본동작(default behavior) • 별다른 추가 작업 없이도 쓸만한 기본 동작을 제공 • 확장성(extensibility) • 사용자에 의한 선택적 재정의 혹은 기능 추가에 의해 • 변경 불가 • 일반적으로 사용자에 의한 확장은 허용하지만 프레임워크 자체의 변경은 불가함 • (http://en.wikipedia.org/wiki/Software_framework 발췌)
컨테이너 - 컴포넌트 구조(container - component) • 개방형 구조 • 사용자는 제 3자가 작성한 컴포넌트를 추가함으로써 애플리케이션의 기능을 확장할 수 있음 • 컴포넌트를 추가할 때 아무런 프로그램 변경도 필요하지 않음 • 사용자는 시장에 있는 많은 컴포넌트들 중에서 골라 사용할 수 있다. • (http://www.cs.sjsu.edu/~pearce/modules/patterns/enterprise/Container.htm요약)
컴포넌트 (component) • 컴포넌트 (plugin이라고 불리기도 함) • 어떤 인터페이스를 구현하고 있는, 서로 협력하는 객체들 • 디폴트 생성자, getter/setter를 갖는 프로퍼티
컨테이너 (container) • 시스템 기능을 수행함 • 컴포넌트들의 라이프사이클관리 • create, suspend, resume, destroy • 컴포넌트들에게 기반 서비스를 제공 • communication • persistence • security • execution environment (a VM for example) • synchronization • white and yellow page directories, etc.
컨테이너 예 • Browsers containing Applets • Web Containers containing Sevelets • EJB Containers containing EJB Beans • The Eclipse platform containing plugins • The Visual Basic IDE containing VB controls • The PC Motherboard and PCI or ISA expansion cards
Enterprise Application • multiuser, mission critical • transaction support, security, distributed computing • EJB --> light-weight frameworks
스프링 • Lightweight and minimally invasive development with POJOs (Plain Old Java Objects) • Loose coupling through dependency injection and interface orientation • Declarative programming through aspects and common conventions • Boilerplate reduction through aspects and templates