MobaXterm의 Home Edition은 무료입니다. 고급 기능을 사용하거나 MobaXterm을 전문적으로 사용하려면 Professional 에디션에 가입 할 수 있습니다. Professional Edition은 사용자 당 $ 69입니다.
MobaXterm은 휴대용 및 가벼운 응용 프로그램입니다. 즉, USB 스틱에서 시작할 수 있습니다. 하나의 휴대용 .exe 파일에서 SSH, X11, RDP 등과 같은 원격 네트워크 도구와 bash 및 ls와 같은 UNIX 명령을 Windows 데스크톱으로 가져옵니다. MobaXterm은 텍스트 편집기를 제공합니다.
풍모:
MobaXterm에는 내장 X 서버, X11 포워딩 및 SSH가있는 탭 터미널이 있습니다.
Windows에 UNIX 명령을 가져 왔습니다.
플러그인을 통해 확장 가능한 플랫폼입니다.
보안 SSH 연결을 사용하여 암호화를 통해 그래픽 애플리케이션 및 파일 전송에 네트워크 보안을 제공합니다.
▶ 실행구성(Launch configuration Main) : Main Class 지정
▶ 대상내보내기(Export destination) : 생성할 JAR 파일의 위치와 이름 설정
▶Library handling 에서 옵션 설정
- Extract required libraries into generated JAR : 필수 라이브러리들을 추출해서 내부로 포함.
- Package required libraries into generated JAR : 필수 라이브러리들을 전부 패키지로 Jar 내부로 포함
- Copy required libraries into sub-folder next to the generated JAR : 필수 라이브러리들을 전부 Jar 외부의 하위 경로 로 복사하고 class-path로 참조한다. 필수 라이브러리들은 생성할 JAR파일명_lib에 저장한다.
(사용하지 않는 라이브러리가 포함될 수 있다)
예) Extract required libraries into generated JAR로 실행Jar배포 하고 다른프로젝트에서 가져왔을때
가져왔을때 참조 라이브러리
원래 프로젝트 패키지 com.dicws.db 외 라이브러리가 내부처럼 Jar안에 들어가 있음
객체지향 프로그래밍(Object-Oriented Programming)은 좀 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임으로 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드것
좋은 객체를 만드는 법이다. 이것을 다른 말로는 설계를 잘하는 법이라고 할 수 있다. 좋은 설계는 현실을 잘 반영해야 한다.
ㅁ 부품화
정신적인 것은 실체가 없고, 무한하고, 유연하다. 이러한 특성은 정신이 가진 장점이면서 소프트웨어의 극치다. 하지만 정신의 이러한 특성은 때로 오해나 모순 같은 문제점을 유발한다. 소프트웨어도 이러한 문제점을 그대로 상속받는다. 이러한 문제점을 극복하기 위한 노력 중의 하나가 부품화라고 할 수 있다
ㅁ은닉화 캡슐화
제대로된 부품이라면 그것이 어떻게 만들어졌는지 모르는 사람도 그 부품을 사용하는 방법만 알면 쓸 수 있어야 한다. 이를테면 모니터가 어떻게 동작하는지 몰라도 컴퓨터와 모니터를 연결하는 방법만 알면 화면을 표시 할 수 있는 것과 같은 이치다. 즉 내부의 동작 방법을 단단한 케이스 안으로 숨기고 사용자에게는 그 부품의 사용방법만을 노출하고 있는 것이다. 이러한 컨셉을 정보의 은닉화(Information Hiding), 또는 캡슐화(Encapsulation)라고 부른다
ㅁ 인터페이스
컴퓨터와 모니터를 만드는 업체들은 위와 같은 케이블의 규격을 공유한다. 모니터 입장에서는 컴퓨터가, 컴퓨터 입장에서는 모니터가 어떤 식으로 만들어졌는지는 신경쓰지 않는다. 각각의 부품은 미리 정해진 약속에 따라서 신호를 입, 출력하고, 연결점의 모양을 표준에 맞게 만들면 된다. 이러한 연결점을 인터페이스(interface)라고 한다.
- 인터페이스에 정의된 모든 메소드는 상속받는 클래스에서 전부 오버라이딩해야 한다.
- 인터페이스로부터 상속 받을 때 implements키워드 사용
ㅁ 클래스와 인스턴스
클래스는 연관되어 있는 변수와 메소드의 집합
new 키워드를 통하여, 이렇게 만들어진 구체적인 제품을 인스턴스(instance)라고 부른다. 아래의 관계를 기억하자.
Constructor:new즉Instance를통하여초기화담당 ==>초기화시 이름, 나이, 출생지 받는 것
Instance :구현된구체적인실체(메모리사용) == 생성자라고 함
ㅁ 상속(Inheritance)
상속(Inheritance)이란 물려준다는 의미다. 어떤 객체가 있을 때 그 객체의 필드(변수)와 메소드를 다른 객체가 물려 받을 수 있는 기능을 상속
※ 부모 클래스와 자식 클래스의 관계를 상위(super) 클래스와 하위(sub) 클래스라고 표현하기도 한다. 또한 기초 클래스(base class), 유도 클래스(derived class)라고도 부른다
Animal이란 공통성격을 만들어 Cat, Mouse, Duck등 상속 관계
ㅁ 생성자
기본생성자, 즉 매개변수가 없으면 start
ㅁ Overriding
상속은 상위 클래스의 기능을 하위 클래스에게 물려주는 기능
ㅁ Overloading
이름은 같지만 시그니처는 다른 메소드를 중복으로 선언 할 수 있는 방법을 메소드 오버로딩(overloading)이라고 한다.
※ Overriding vs Overloding
riding(올라탄다)을 이용해서 부모 클래스의 메소드의 동작방법을 변경하고
loading을 이용해서 같은 이름, 다른 매개변수의 메소드들을 여러개 만들 수 있다는 사실을 아는 것이 중요
※ 참고로 overriding는 재정의라는 사전적인 의미
ㅁ abstract
abstract란 한국어로는 추상으로 번역된다. 이에 대한 정의는 뒤에서 내리도록 하고 지금 단계에서는 abstract라는 것이 상속을 강제하는 일종의 규제라고 생각하자. 즉 abstract 클래스나 메소드를 사용하기 위해서는 반드시 상속해서 사용하도록 강제하는 것이 abstract다.
- 추상 메소드는 선언만 되어 있고 구현 부분이 없는 메소드로 메서드의 결과형 앞에 abstract를 기재해서 생성
- 추상 메소드는 반드시 하위 클래스에서 오버라이딩 되어서 구현되어야 한다.
- 추상 메소드는 일반적인 멤버 변수와 메소드를 가질 수 있습니다.
- 하지만 객체를 생성하지 못하여 상속을 통해서만 사용되어 집니다.
ㅁ polymorphism(다형성)
다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것
- overloging 과 다형성
- 클래스와 다형성
- 인터페이스와 다형성
ㅁ 참조
- 복제
public class Test {
public static void runValue() {
int a = 1;
int b = a;
b = 2;
System.out.println("runValue a " + a);
System.out.println("runValue b " + b);
}
public static void main(String[] args) {
runValue();
}
}
a= 1, b = 2값이다
- 참조
public class Test {
public static void runReference() {
A a = new A(1);
A b = a;
b.id = 2;
System.out.println("runReference, " + a.id);
System.out.println("runReference, " + b.id);
}
public static void main(String[] args) {
runReference();
}
}
class A{
public int id;
A(int id){
this.id = id;
}
}
※ 만일b에 담긴 인스턴스의 id 값을 2로 변경했을 뿐인데 a.id의 값도 2가 된 것이다
ㅁ제네릭
제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 말이 어렵다. 아래 그림을 보자.
※ 제네릭으로 올 수 있는 데이터 타입을 특정 클래스의 자식으로 제한할 수 있다
ㅁ 컬렉션즈 프레임워크(Collections FrameWork)
배열의 불편한 점이 있었는데 그 중의 하나가 한번 정해진 배열의 크기를 변경할 수 없다는 점이다. 이러한 불편함을 컬렉션즈 프래임워크을 해결함
그럼 이제부터 컬렉션즈 프래임워크가 무엇인가 본격적으로 알아보자. 컬렉션즈 프래임워크라는 것은 다른 말로는 컨테이너라고도 부른다. 즉 값을 담는 그릇이라는 의미이다. 그런데 그 값의 성격에 따라서 컨테이너의 성격이 조금씩 달라진다. 자바에서는 다양한 상황에서 사용할 수 있는 다양한 컨테이너를 제공하는데 이것을 컬렉션즈 프래임워크라고 부른다. ArrayList는 그중의 하나다.
위의 그림은 컬렉션즈 프래임워크의 구성을 보여준다. Collection과 Map이라는 최상위 카테고리가 있고, 그 아래에 다양한 컬렉션들이 존재한다. 그럼 구체적인 컬렉션즈 프래임워크 클래스들을 살펴보자.
플러그인 프로젝트 선택프로젝트 이름 및 플러그인실행대상 선택기본 자바 실행버전(좀 낮게), UI 제공, RCP응용프로그램 작성여부 YesRCP 기본 템플릿 선택(3.x로 시작)패키지 기본설정RCP 기본템플릿 실행(plugin.xml선택, 개요탭에 Eclipse응용프로그램 실행)
ㅁ 기본구조 확인
기본적으로 RCP프로젝트를 생성하면 아래와 같은 기본 클래스들이 생긴다. 이 클래스들은 RCP프로그램에서 각자의 역할이 있으며, 구성하고있는 역할을 알고 있어면 훗날 개발을 진행할 때 진행이 수월하다.
Application
RCP프로그램의 main routine으로 동작 및 프로그램의 컨트롤러 역할을 한다. 또한 Workbench와 다른 Workbench Advisor라고 불리는 다른 클래스들을 연결시키는 역할한다. 이때 Workbench는 프로그램 하나를 말한다. Workbench는 Worbench Window을 포괄하는 개념이며, 예를 들어 새로운 이클립스창이 띄워졌을때 New window를 하면 하나의 창이 더 띄워진다. 이때 각각의 창은 Workbench Window이고, 2개가 존재한다. 하지만 Workbench는 창이 늘어나도 하나로 존재하게된다.
WorkbenchAdvisor
Workbench의 lifecycle에 대해 명시하고 있다. default perspective와 같은 중요한 파라미터들을 Workbench에 제공한다. 가장 중요한 점은 WorkbenchAdvisor의 메소드들은 오버라이드가 될 수 없다.
WorbenchWindowAdvisor
상태 line, 툴바. 제목. 윈도우 사이즈 등 커스터마이즈 하길 원하는 것들이 들어간다.
Perspective
view, editor, menu들의 위치와 사이즈를 갖고있음 적어도 하나의 perspective는 가지고 있어야 한다.
View
화면을 담당하는 부분이다. 곧, 뷰어들을 생성하고 초기화를 진행한다. 화면을 Viewer의 컨트롤에 요청하는 setFocus()와 모든 구성 요소들을 활성화하는 CreatePartControl(Composite) 함수가 반드시 필요하다. 이 두 함수는 처음 실행될때 호출된다. setFocus() createPartControl(Composite)는 시키기 위해 선언하는 곳이다
10가지의 플러그인 중 큰 몇가지만 설명하고자 한다.
UI Workbench: UI Workbench는 editor, view, perspective 등을 포함하고 있다.
SWT: 운영체제의 네이티브 윈도우 환경과 긴밀하게 통합된 다양한 컴포넌트와 플랫폼 독립적인 API를 제공한다. 즉, 윈도우에서 정의한 위젯에 대한 접근을 제공한다.
JFACE: 범용 UI 개념을 위한 구조와 편의기능을 제공한다. SWT를 이용하여 사용자 인터페이스를 개발할 때 해야하는 많은 공통 작업들을 간단하게 해 주는 컴포넌트와 헬퍼 유틸리티 세트를 제공 데이터 뷰, 위저드, 다이얼로그 컴포넌트 등을 제공하기 위해 SWT를 확장하는 많은 유틸리티 클래스들을 포함하고 있다.
RUNTIME: 플러그인과 페이지 로딩 및 초기화 간에 확장 포인트 모델 기반의 느슨한 결합을 정의하고 있다.
OSGi: 이클립스에서 플러그인의 발견 및 애플리케이션의 재시작 없이 플러그인을 로딩 및 언로딩하는 것을 포함하여 플러그인의 라이프사이클 관리등을 위한 프레임워크이다.