블로그 이미지
좋은느낌/원철
이것저것 필요한 것을 모아보렵니다.. 방문해 주셔서 감사합니다..

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Notice

    2008. 7. 1. 15:22 개발/Java
    자바란 무엇인가?
    왜 자바가 중요한가?
    자바 컴포넌트 기술이란 무엇인가?
    자바는 SOA/웹 서비스와 어떻게 관련이 있는가?
    자바 프로그래밍 능력을 어떻게 향상시킬 수 있는가?
    자바 프로그래머들이 사용할 수 있는 IBM 툴과 제품에는 무엇이 있는가?




    developerWorks 자바 존은 자바 기술과 애플리케이션 관련하여 수 백 개의 기술자료, 튜토리얼, 팁을 제공한다. 하지만 새로운 주제를 시작하는 사용자들에게는 오히려 이 많은 정보들이 부담스러울 것이다. 따라서 이 페이지에서는 자바의 기초를 설명한다. 기술자료, 튜토리얼과, 팁, IBM 교육 서비스, 웹 캐스트, 워크샵, IBM 제품 연구 등 다양한 리소스 형태가 준비되어 있다.


    자바란 무엇인가?

    자바(Java technology)는 객체 지향 프로그래밍 언어이자 Sun Microsystems에서 개발한 플랫폼이다. 자바는 하나의 자바 가상 머신(JVM)(언어와 기저의 소프트웨어 및 하드웨어 간 트랜슬레이터)의 개념에 근거하고 있다. 모든 프로그래밍 언어의 구현들은 JVM을 모방하여 자바 프로그램들이 JVM 버전을 가진 모든 시스템 상에서 실행될 수 있다.

    자바 프로그램컴파일되고 (자바 바이트코드 라고 하는 중간 언어로 번역), 인터프리팅(JVM에 의해 파싱 및 실행되는 바이트코드) 되기 때문에 자바 프로그래밍 언어는 평범한 것은 아니다. 컴파일이 일단 발생하면 프로그램이 실행될 때 마다 인터프리팅이 발생한다. 컴파일 된 바이트코드는 JVM을 위해 최적화된 머신 코드의 형태가 된다. 인터프리터는 JVM의 구현이다.

    세 가지 버전으로 되어있는 자바 플랫폼(아래 자바 플랫폼 버전 참조)은 자바와 JVM과 애플릿과 애플리케이션 개발과 전개를 돕는 소프트웨어 컴포넌트들의 컬렉션인 자바 애플리케이션 프로그래밍 인터페이스(API)로 구성되어 있다. 자바 API는 관련 클래스와 인터페이스들의 라이브러리로 나뉜다. 라이브러리는 패키지로 알려져 있다.

    자바 플랫폼 버전들
    자바의 인기가 높아지면서 개발자들은 보다 단순한 것을 요구하게 되었다. Sun Microsystems는 Standard Edition, Enterprise Edition, Micro Edition 등의 다양한 버전의 자바 플랫폼을 개발하여 이러한 요구 사항에 부응하고 있다.

    보다 자세히

    • J2SE(Java 2 Standard Edition). 자바로 애플릿과 애플리케이션을 작성, 전개 구동하는 개발자를 위한 표준 Java 2 SDK, 툴, 런타임, API이다. Magic with Merlin 칼럼에서는 J2SE version, 1.4의 버전에 대한 개요 자료를 제공한다. 최신 버전인 J2SE 1.5 (일명 "Tiger")에 대해서는 Magic with Merlin 필자가 새로운 시리즈, Taming Tiger를 계획하고 있다.

    • J2EE(Java 2 Enterprise Edition). 표준화된 모듈식 컴포넌트에 기반하고 있고, 그러한 컴포넌트에 완벽한 서비스 세트를 제공하며, 복잡한 프로그래밍 없이 애플리케이션 작동의 상세를 자동으로 핸들함으로서 멀티-티어 엔터프라이즈 애플리케이션의 구현과 전개를 간소화 한다. J2EE pathfinder 칼럼에서 J2EE에 대한 이해를 높일 수 있다.

    • J2ME(Java 2 Micro Edition). 이 버전은 고도로 최적화 된 자바 런타임 환경으로서 스마트 폰이나 페이저부터 셋톱(set-top) 박스 까지 (물리적으로나 메모리 기능에서) 작은 장치들을 다룬다. 두 개의 튜토리얼의 4부 구성된 튜토리얼과 J2ME와 Mobile Information Device Profile (MIDP)를 다룬 관련 기술자료를 참조하라.


    위로


    왜 자바가 중요한가?

    일반적으로 자바의 큰 장점은 플랫폼과 운영 체계간 이식성에 있고 다이얼업 통신 같은 저대역 채널을 통해서 전달될 수 있다는 점이다. 또한 확장성도 있다. 기존 애플리케이션들이 제한된 메모리 리소스를 가진 장치에도 쉽게 순응한다. 게다가 네트워크를 통해서 안전한 방식으로 구동 되도록 설계되었기 때문에 인터넷을 통해 실행될 때에도 같은 수준의 보안을 확립할 수 있다. 자바는 데스크탑에서 웹의 리소스로 사용자의 컴퓨팅 경험을 확대한다.

    자바는 IBM의 온 디맨드 비즈니스 이니셔티브에 중요하다. 자바 (그리고 리눅스)는 기업에서 오픈 표준을 지원하는 기술들 중 하나였고 XML과 웹 서비스를 사용하여 비즈니스 라인들 간 정보와 애플리케이션 공유라는 새 장을 열었다. 게다가 많은 IBM 제품들과 기술 컨설팅 서비스의 중추적인 역할을 한다.

    보다 자세히:

    • 온 디맨드 비즈니스의 철학과, 시장의 요구에 빠르게 부응할 수 있는 엔터프라이즈 시스템을 구현하는데 이것이 어떤 역할을 하는지 배워보자.


    위로


    자바 컴포넌트 기술이란 무엇인가?

    자바의 약어를 익히는 일은 만만치 않은 일이다. 이번 섹션에서는 컴포넌트, 패키지 옵션, 각 버전의 확장 리스트를 소개하겠다. 각각의 기술 마다 짧은 설명과 링크가 곁들여져 있다. 대부분의 리소스들이 에디션을 통해 사용할 수 있다.

    J2SE:

    • Java Access Bridge for Microsoft Windows는 일종의 다리 역할을 한다. Windows 기반 기술이 Java Accessibility API와 인터랙팅 할 수 있다. ("Coding for accessibility 참조.")

    • JavaBeans Component Architecture는 플랫폼 중립적인 스팩으로서 자바 플랫폼을 위한 표준 컴포넌트 소프트웨어 API를 정의한다.

    • Javadoc은 소스 코드의 doc 주석에서 API 문서를 HTML로 만드는 툴이다. ("I have to document THAT? 참조.")

    • Java Foundation Classes (Swing) (JFC)는 자바 클래스 라이브러리 세트로서 자바 기반의 클라이언트 애플리케이션을 위한 GUI와 그래픽 기능의 구현을 지원한다. ("The Java 2 user interface 참조.")

    • Java Platform Debugger Architecture (JPDA)는 Java 2용 디버깅 지원 인프라이다. JPDA에는 세 개의 레이어드 API가 있다.
      • JDI (Java Debug Interface)는 고급의 프로그래밍 언어 인터페이스로서 원격 디버깅을 지원한다.

      • JDWP (Java Debug Wire Protocol)는 디버깅 프로세스와 디버거 프론트엔드 간 전달되는 정보와 요청의 포맷을 정의한다.

      • JVMDI (Java Virtual Machine Debug Interface)는 저급의 원시 인터페이스로서 JVM이 디버깅을 위해 제공하는 서비스를 정의한다.

      ("The future of software development 참조.")

    • Java 2D API는 이미지 구성과 알파 채널 이미지를 제공하는 고급 2D 그래픽과 이미징을 위한 클래스이자, 정확한 컬러 공간 정의와 변환을 제공하는 클래스이자, 디스플레이 지향의 이미징 오퍼레이터이다. ("Introduction to Java 2D 튜토리얼 참조.")

    • Java Web Start는 설치 절차 없이 한번의 클릭으로 완전한 애플리케이션(스프레드시트)을 다운로드 및 시작할 수 있는 기능을 제공하기 때문에 자바 애플리케이션의 개발이 간단해 진다. ("Java Web Start 참조.")

    • Java Database Connectivity (JDBC)는 자바에서 테이블 형식의 데이터 소스에 액세스 하는데 사용하는 API이다. 광범위한 SQL 데이터베이스에 크로스 DBMS 연결과, 스프레드시트나 플랫 파일 같은 기타 테이블 형식의 데이터 소스로의 액세스를 지원한다. ("What's new in JDBC 3.0 참조.")

    • Remote Method Invocation (RMI)는 부트스트래핑 네이밍 서비스를 제공하며, 유형을 절단하지 않고, 객체 직렬화를 사용하여 프로그래머들이 분산된 자바 기반 애플리케이션을 만들 수 있다. 원격 자바 객체들의 메소드가 다른 호스트에 있는 자바 가상 머신에서 호출될 수 있다. ("Java distributed objects: Using RMI and CORBA 참조.")

    • Java Advanced Imaging (JAI)는 개발자가 이미지를 쉽게 조작할 수 있도록 단순하고 고급의 프로그래밍 모델을 지원하는 객체 지향 인터페이스를 제공하는 API이다. ("JSP 코드로 이미지 관리하기(한글)참조.")

    • Java Authentication and Authorization Service (JAAS)는 자바 버전의 표준 Pluggable Authentication Module (PAM)을 구현하고 사용자 기반 인증을 지원하여 액세스 제어를 인증 및 실행하는 서비스 패키지이다. ("Java security with JAAS and JSSE", "Java security, Part 2: Authentication and authorization", "Extend JAAS for class instance-level authorization" 참조.)

    • Java Cryptography Extension (JCE)은 암호화, 키 생성, 동의, Message Authentication Code (MAC) 알고리즘을 위한 프레임웍과 구현을 제공하는 패키지이다. 암호화를 제공하고 보안 스트림과 보호 객체를 지원한다. ("Java security: Crypto basics 튜토리얼 참조.")

    • Java Data Objects (JDO)는 표준의 인터페이스 기반 자바 모델 영속성의 추상화로서 애플리케이션 프로그래머가 자바 도메인 모델 인스턴스를 영속 스토어(데이터베이스)에 직접 저장할 수 있다. 또한 이 같은 메소드들을 직접적인 파일 입출력, 직렬화, JDBC, EJB Bean Managed Persistence (BMP), Container Managed Persistence (CMP) Entity Beans으로 대체할 수 있다. (튜토리얼 "Hands-on Java Data Objects","Object-relation mapping without the container 참조.")

    • Java Management Extensions (JMX)는 장치, 애플리케이션, 서비스 중심 네트워크의 관리와 모니터링을 위한 웹 기반, 모듈식의 동적인 애플리케이션을 구현하는 툴을 제공한다. JMX Remote는 이러한 에이전트에 원격으로 액세스하는 수단을 표준화하는 기능을 제공하여 JMX 스팩을 확장한 것이다. ("From black boxes to enterprises: JMX 1.1 style 참조.")

    • Java Media Framework (JMF)는 오디오, 비디오, 기타 시간 기반 미디어들을 자바 애플리케이션과 애플릿에 추가시킨다. (튜토리얼 "Java Media Framework basics참조.")

    • Java Naming and Directory Interface (JNDI)는 자바 애플리케이션에 다중 네이밍 및 디렉토리 서비스에 대한 통합 인터페이스를 제공하는 표준 확장으로서 이종의 엔터프라이즈 네이밍 및 디렉토리 서비스에 완벽한 연결이 가능하다. ( "Industrial-strength JNDI optimization"; "Navigate the JNDI maze 참조.")

    • Java Secure Socket Extensions (JSSE)는 보안 인터넷 통신을 가능케 하는 패키지 세트로서 자바 버전의 SSL (Secure Sockets Layer)과 TLS (Transport Layer Security) 프로토콜을 구현하고 데이터 암호화, 서버 인증, 메시지 무결성, 선택적 클라이언트 인증을 위한 기능을 포함시켰다. ("Java security with JAAS and JSSE", 튜토리얼 "Using JSSE for secure socket communication 참조.")

    • Java Speech API (JSAPI) -- Grammar Format (JSGF)과 Markup Language (JSML) 스팩이 포함되어 있으며, 자바 애플리케이션에서 스피치 기술과 사용자 인터페이스를 통합시켰다. JSAPI는 크로스 플랫폼 API를 정의하여 명령어와 제어 인지자, 명령 시스템, 스피치 신디사이저를 지원한다. ("The Java 2 user interface 참조.")

    • Java 3D는 확장성 있는, 플랫폼 독립의 3D 그래픽을 자바 애플리케이션으로 결합하는데 쉽게 사용할 수 있다. 간단한 고급 프로그래밍 모델을 지원하는 객체 지향 인터페이스를 제공한다. (튜토리얼 "Java 3D joy ride 참조.")

    J2EE 기술:

    • Java API for XML Processing (JAXP)는 DOM, SAX, XSLT를 사용하여 XML 문서의 프로세싱을 지원한다. 애플리케이션이 특정 XML 구현과 독립적으로 XML 문서를 파싱 및 변형할 수 있고, 개발자는 애플리케이션 코드를 변경하지 않고도 XML 프로세서들을 바꿀 수 있다. ("자바 프로그래밍으로 온라인 XML 데이터 검색하기 (한글) 참조.")

    • Java API for XML Registries (JAXR)는 다양한 종류의 XML 레지스트리에 액세스 하는 표준 API를 제공한다. (웹 서비스의 구현, 전개, 발견을 위한 인프라를 실행한다. ("Java technology standards 참조.)

    • Java API for XML-based RPC (JAX-RPC)를 사용하여 SOAP 기반의 상호 운용성 및 이식성 있는 서비스를 개발한다. ("Java technology standards 참조.)

    • SOAP with Attachments API for Java (SAAJ)를 사용하여 SOAP 1.1 스팩과 SOAP with Attachments 노트에 순응하는 메시지를 생산 및 소비할 수 있다. ("Send and receive SOAP messages with SAAJ"; "자바 웹 서비스 (한글)" , developerWorks XML 섹션 참조.)

    • Common Object Request Broker Architecture (CORBA)는 자바를 보완하는 이종의 컴퓨팅을 위한 오픈 표준이다. 분산 객체 프레임웍, 그 프레임웍을 지원하는 서비스, 다른 언어와의 상호 운용성을 제공한다. (튜토리얼 "Java distributed objects: Using RMI and CORBA"; "기업에서의 RMI-IIOP (한글)" 참조.)

    • ECperf는 웹 비즈니스 시스템의 퍼포먼스와 확장성을 측정하는데 사용되는 벤치마크이다. 애플리케이션을 구성하는 EJB 컴포넌트, 싱글 유저/인터랙티브 테스팅에 JSP를 사용하는 웹 클라이언트, 스키마 스크립트와 로드 프로그램, makefile과 전개 디스크립터, 규칙을 실행하고 클라이언트 로드를 시뮬레이트 하는 드라이버 프로그램 등이 포함된다. (Java technology standards 참조.)

    • Enterprise JavaBeans (EJB)는 트랜잭션, 보안, 데이터베이스 연결성 등을 지원하여 미들웨어 애플리케이션의 개발을 간소화 하는 컴포넌트 모델을 사용한다. (튜토리얼 "Getting started with Enterprise JavaBeans technology"와 EJB best practices 참조.)

    • Java Authorization Contract for Containers (Java ACC)는 컨테이너가 사용할 권한 공급자의 설치와 설정을 정의하는 스팩이다. Java ACC는 공급자가 사용할 인터페이스를 정의한다. (튜토리얼 "Developing accessible GUIs with Swing참조.")

    • JavaMail은 메일 시스템을 모델링 하는 추상 클래스 세트를 제공하는 API이다. (튜토리얼 "Fundamentals of JavaMail API 참조.")

    • Java Message Service (JMS)는 JMS 기술 순응의 메시징 시스템들에 의해 지원을 받을 메시징 개념과 프로그래밍 전략들을 정의하여 자바 플랫폼을 위한 이식 가능한 메시지 기반의 애플리케이션의 개발을 실행하도록 프로바이더 프레임웍을 추가하는 API 이다. ("Get the message: Messaging in J2EE 1.4", "Enterprise messaging with JMS", "벤더로 부터 독립된 JMS 솔루션 구현하기 (한글)", 튜토리얼 "Introducing the Java Message Service 참조.")

    • JavaServer Faces (JSF)는 재사용 가능한 UI 컴포넌트를 한 페이지 안에 정렬하여 웹 애플리케이션을 만드는 프로그래밍 모델을 제공한다. 이러한 컴포넌트들을 애플리케이션 데이터 소스로 연결하고 클라이언트가 생성한 이벤트를 서버측 이벤트 핸들러로 연결한다. (JSF for nonbelievers, UI development with JavaServer Faces", "Struts, Tiles, JavaServer Faces 통합하기 (한글)" 참조.")

    • JavaServer Pages (JSP)를 사용하여 동적인 플랫폼 독립의 웹 페이지를 빠르고 쉽게 개발할 수 있다. 디자이너들은 동적 콘텐트를 변경하지 않고 페이지 레이아웃을 변경할 수 있다. 이 기술을 XML 계열의 태그를 사용한다. (튜토리얼 "Introduction to JavaServer Pages technology", JSP best practices 참조.)

    • Java Servlets는 자바가 웹 서버를 확장하고 향상시키는 방식이다. CGI 프로그램의 퍼포먼스 제한 없이 웹 기반 애플리케이션을 구현하는 컴포넌트 기반, 플랫폼 독립의 메소드를 제공한다. (Roy Miller의 Introduction to Java Servlet technology 참조.)

    • J2EE Connector Architecture (JCA)는 이종의 EIS(Enterprise Information Systems)에 J2EE 플랫폼을 연결하는 표준 아키텍처를 정의한다. 확장성 있고 안전한 방식을 제공하고 EIS 벤더들은 애플리케이션 서버에 플러그인 될 수 있는 표준 리소스 어댑터를 제공한다. ("Choosing among JCA, JMS, and Web services for EAI", "Integrate remote enterprise information systems with JCA, JMS, and Web services", "Introduction to the J2EE Connector Architecture 참조.")

    • J2EE Management Specification (JMX)는 J2EE 플랫폼, J2EE 관리 모델을 위한 관리 정보 모델을 정의한다. 이 모델은 많은 관리 시스템과 프로토콜과 상호 운용될 수 있도록 설계 된다. 이 모델은 많은 관리 시스템과 프로토콜과 상호 운용되도록 설계되었다. Common Information Model (CIM), SNMP Management Information Base (MIB), EJB 컴포넌트를 통한 자바 객체 모델, J2EE Management EJB Component (MEJB)에 대한 표준 매핑이 포함되어 있다. ("From black boxes to enterprises: Management, JMX 1.1 style 참조.")

    • Java Transaction API (JTA)는 고급의 구현 및 프로토콜 독립적인 API로서 애플리케이션과 애플리케이션 서버들이 트랜잭션에 액세스 할 수 있다. Java Transaction Service (JTS) 는 JTA를 지원하는 Transaction Manager의 구현을 지정하고 OMG Object Transaction Service (OTS) 1.1 스팩의 자바 매핑을 정의한다. JTS 는 transactions using the Internet Inter-ORB Protocol (IIOP)를 사용하여 트랜잭션을 전파한다. ("JTS 이해하기 - 트랜잭션에 대한 소개 (한글) 참조.")

    J2ME:

    • Connected Limited Device Configuration (CLDC)은 리소스 제한 모바일 정보 장치용 자바 런타임 환경을 구성하는 두 개의 설정 중 하나이다. CLDC는 가장 기본적인 라이브러리와 가상 모신 기능을 구성한다. 이것은 각 J2ME 구현에 나타나며 여기에는 K 가상 머신(KVM)이 포함된다.

    • Mobile Information Device Profile (MIDP)는 리소스 제한 모바일 정보 장치용 자바 런타임 환경을 구성하는 두 개의 설정 중 하나이다. MIDP는 코어 애플리케이션 기능을 제공한다. 사용자 인터페이스, 네트워크 연결, 로컬 데이터 스토리지, 애플리케이션 수명 관리 등이 포함된다. (튜토리얼 "Implementing Push technology with J2ME and MIDP 참조.")

    • Connected Device Configuration (CDC) 은 네트워크로 연결된 사용자와 임베디드 장치간 공유될 수 있는 애플리케이션을 구현 및 전달하는 표준 기반의 프레임웍이다. ("Securing wireless J2ME 참조.")

    자바 네트워킹:

    • JAIN은 자바 기반의 API로서 차세대 텔레콤 제품과 서비스의 빠른 개발을 이끈다. JSLEE는 이벤트 중심의 컴포넌트 기반 컨테이너 기술로서 고성능의 비동기식의 오류에 강한 애플리케이션 서버이다. (Java technology standards 참조.)

    • Java Metadata Interface (JMI)는 동적인 플랫폼 중립적인 인프라를 구현하는 스팩으로서 메타데이터의 생성, 스토리지, 액세스, 발견, 교환을 실행한다. Object Management Group (OMG)의 Meta Object Facility (MOF) 스팩에 기반하고 있으며 UML (Unified Modeling Language)을 사용하여 기술되는 기본적인 모델링 생성물들로 구성되어 있다. (Java technology standards 참조)

    • JavaGroups는 분산된 시스템 솔루션을 갖춘 디자인, 구현, 실험을 위한 소프트웨어 툴킷(API 라이브러리)이다. ("High-impact Web tier clustering, Part 1" Part 2 참조.)

    • Jini는 하드웨어와 소프트웨어를 위한 네트워크 중심의 서비스를 구현하는 개방 아키텍처이다. Jini 시스템 아키텍처는 세 개 범주, 프로그래밍 모델, 인프라, 서비스로 구성되어 있다. ("Jini networking technology, the next step 참조.")

    • JXTA는 오픈 프로토콜로서 네트워크 상에서 연결된 어떤 장치라도 P2P 방식으로 통신 및 협업할 수 있다. JXTA 피어는 가상 네트워크를 만든다. 이곳에서 모든 피어들은 다른 피어들이나 리소스들과 직접 인터랙팅 한다. 피어나 리소스가 방화벽과 NAT 뒤에 있거나 다른 네트워크 트랜스포트에 있어도 통신이 가능하다. ("Making P2P interoperable: The JXTA story", "JXTA 2: A high-performance, massively scalable P2P network 참조.")


    위로


    자바는 SOA/웹 서비스와 어떻게 관련이 있는가?

    서비스 지향 아키텍처는 애플리케이션(웹 서비스)의 기능 단위들을 잘 정의된 인터페이스들과 서비스들간 컨트랙트에 연관시키는 컴포넌트 모델이다. 인터페이스는 하드웨어, 운영 체계, 프로그래밍 언어와 독립적인 방식으로 정의된다. 다른 시스템에서 구현된 서비스들도 일관되고 통용된 방식으로 인터랙팅 할 수 있다. SOA는 약결합 방식의 모델로서, 전통적인 강결합 방식의 객체 지향 모델에 대한 대안이라고 할 수 있다.

    비즈니스 규칙과 프로세스는 XML로 정의되어 소프트웨어 애플리케이션은 플랫폼 및 프로그래밍 언어와는 독립된 방식으로 통신할 수 있다. XML은 데이터 이식성을 높이고 메시지의 생성을 수월하게 한다. XML과 자바는 웹 서비스를 구현 및 전개하는데 이상적인 조합이라 할 수 있다.

    보다 자세히:



    위로


    자바 프로그래밍 능력을 어떻게 향상시킬 수 있는가?

    두 가지 방법이 있다. 정규 코스를 밟는 것(인증 또는 교육)과 독학(코드 작성 연습)이다. 숙련된 개발자들의 지식을 배우는 것 외에도, 인증 과정을 밟으면서 기술을 향상시킬 수 있다. 스스로 실험해 보고, 리소스도 사용해 보면서 자바 기술을 발전시킬 수 있다.

    보다 자세히:



    위로


    자바 프로그래머들이 사용할 수 있는 IBM 툴과 제품에는 무엇이 있는가?

    IBM은 자바 사용에 있어서 선두적인 위치에 서 있다. 자바 다운로드와 제품 페이지에서 전체 리스트를 볼 수 있겠지만, 우선 먼저 중요한 내용만 간추렸다.

    보다 자세히:



    위로
    posted by 좋은느낌/원철