본문 바로가기

java

J2EE란? 1. J2EE (Java 2 Enterprise Edition) ■ J2EE란? J2EE는 자바 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합입니다. J2EE를 만든 것은 Sun Microsystems이고 SUN에서 J2EE 스펙을 시범적으로 구현해두기는 하지만, IBM, BEA, Oracle, HP, Iona등 여러 벤더들도 그 스펙을 구현할 수 있으며 J2EE 호환성을 검증하 는 기구의 검증을 통과하기만 하면 J2EE 호환 제품으로 시장에 출시할 수 있습니다. 그리고 이런 벤더들은 J2EE 스펙을 개선하는 과정에도 활발히 참여하기 때문에, J2EE는 사실상 SUN의 독점적인 기술이라기 보다는 Java진영으로 불리는 여러 Vendor들과 개발자들이 같이 만들어 가고 공유하는.. 더보기
[Java Tip] clone()과 Cloneable Object 클래스에 clone() 메서드가 protected로 정의 되어있습니다. native 메서드입니다. 기본적으로는 메모리를 복사한다고 합니다. clone()을 지원하려면 그 클래스는 Cloneable 인터페이스를 implements 해야 합니다. 하지만, 우리가 일반적으로 알고있는 것과는 다르게 Cloneable 인터페이스에는 아무런 메서드도 정의되어 있지 않습니다. 제가 처음에 clone()에 대해서 굉장히 헷갈렸던 부분입니다. 일단, clone()을 지원하지 않을 거라면, 상관없고...clone()을 지원 할 클래스라면 Object 클래스에 정의 되어있는 protected Object clone() 메서드를 public으로 재정의 해서 사용해야 합니다. 재정의하지 않으면, 기본적으로 Obje.. 더보기
[Design Pattern: 구조] 10. Pacade 목적여러가지 복잡한 것들을 하나로 간주해서 편하게 다루는 방법예를 들어, 우리가 흔히 자동차라고 하는 물건은 바퀴, 엔진, 오디오, 사이드 미러 등등 으로 이루어져있지만 우리는 그냥 다 자동차라고 생각하는 게 편합니다. 차안에서 음악을 듣고 싶으면, 그냥 오디오를 켜면 됩니다. "차량에 내장된 오디오"라는 것을 굳이 명확히 하기는 귀찮죠. 예제딱히 그닥 별다른 패턴이 아니기에 생략! 더보기
[Design Pattern: 구조] 9. Decorator 목적주어진 상황이나 용도에 따라 덧붙히는 패턴기능의 확장이 필요할때 서브클래스를 만드는 것보다 유연한 구조를 만들 수 있는 대안예제를 보면 정말 쉽게 알 수 있다. 계속 캡슐로 기능을 싸는 형식이라고 생각하면 쉽다. Decorator Pattern in JAVA API //Inputstream 예제 InputStream is; is = new BufferedInputStream(new FileInputStream(new File("java.txt")) ); 예제 스타크래프트로 예제를 작성하겠다. 데코레이트는 부가적은 기능을 늘려주는 목적이기 때문에 하이템플러의 능력을 업그레이드 하는 과정을 표현했다. 일단 하이템플러를 뽑으면 기본적으로 아무 능력을 발휘할 수 없다(피드백은 됨. 머 없다칩시다). 업그레이.. 더보기
[Desgin Pattern: 구조] 8. Composite 목적객체를 트리구조로 구성하고 개별객체와 복합객체(Composite)가 구성클라이언트에서는 두 객체를 동일하게 사용할 수 있음이 패턴을 적용하면, 기존의 오브젝트를 재이용하기 수월해지고, 오브젝트의 동적인 조립을 실현하는 것이 수월해진다 구조Leaf클래스와 Composite클래스가 있음Leaf클래스와 Composite클래스는 동일한 Abstract를 상속받음Composite클래스는 Leaf클래스들을 답는 용도 예시 // 기본 유닛 Abstract public abstract class Unit { public abstract void attack(); } // Unit을 상속받은 마린!! public class Marine extends Unit{ @Override public void attack() .. 더보기
[Design Patter: 구조] 7. Bridge 목적추상(abstraction)과 이것의 구현(implementation)을 분리하여 각각이 독립적으로 변경될 수 있도록 하는 것클래스 자체가 자주 변할 때 뿐 만 아니라 클래스가 하는 기능이 자주 바뀔때도 유용예제스타크래프트로 예제를 만들어보자. 스타포트에서 나오는 레이스, 드랍쉽에게 Weapon 인터페이스를 가지게 하고 각각의 무기를 따로 클래스로 만들었다. // weaopn 인터페이스를 가지고 있는 Unit Abstraction public abstract class Unit { private Weapon weapon = null; public Unit(Weapon weapon){ this.weapon = weapon; } public void attack() { weapon.attack(); } .. 더보기
이클립스 프로젝트에 빨간 느낌표가 있다?? - 프로젝트명에 x 표시 외에 !표시는 import 시킨 jar 파일의 경로가 잘못되었거나 유효하지 않은 파일이나 디렉토리를 참조하고 있는 경우이다. 이 !표시가 있으면 소스파일을 수정해도 컴파일이 되지 않는다. SVN을 사용하는 경우 SVN 저장소와의 설정내역이 다를경우에도 나타날 수 있다. 해결방법 예시: jar파일이나 디렉토리를 참조하고 있는 내역을 확인한다. 삭제! 삭제! 느낌표가 사라졌음요! 더보기
Swing Layout [LayoutManager] _레이아웃 관리자 GUI프로그램의 화면구성은 매우 중요함 따라서 대부분의 GUI프로그램을 개발시 도구를 지원 그러나 자바에서는 GUI를 구성하는 개발 도구를 기본 버전에서는 지원하지 않음 도구를 사용하지 않고 가장 효율적으로 컴포넌트 배치관리 방법 레이아웃 관리자는 컴포넌트 배치 역할을 하는 레이아웃 관리자를 사용 컨테이너 클래스를 상속받는 클래스에서만 사용가능 Panel, Frame, Window, Dialog, ScrollPane등 레이아웃의 종류 FlowLayout, GridLayout, BorderLayout, CardLayout, GridBagLayer 등 수동 Layout의 장점 단점. 장점 : 수동으로 컴포넌트를 배치하는 작업은 개발자가 원하는 대로 화면을 구성할.. 더보기