커스텀 보드에서 파일 저장 시 sdcard가 깨지거나 파일 저장이 제대로 안되는 경우가 발생함..

정리가 잘 되어 있으니 참고..


http://knight76.tistory.com/entry/java%EC%97%90%EC%84%9C-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%9E%98-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0-sync-flush

'Programming Languages > Java' 카테고리의 다른 글

ConcurrentModificationException  (0) 2013.11.22
implements와 extends  (0) 2010.12.24
변수 짚고 넘어가기~!  (0) 2010.04.28
변수(2)  (0) 2010.04.27
변수(1)  (0) 2010.04.27
Posted by 독뽀
,

http://suein1209.tistory.com/323


잘 정리되어 있네요..


아무래도 병렬 처리라고 할것도 없고 100% 순차 프로그래밍이 아닌 이상

특정 데이터에 동시 접근하는 문제가 add / remove 외에 값을 변경하는 것도 포함이 되지 싶습니다.(멤버 변수 등)


위 블로그에서 설명하는 ArrayList 로 감싸는 방식은 결국 Deep copy 즉 복사본을 하나 만들어 사용하는 것과

컨셉상 유사하다고 할 수 있겠네요..


이 예외의 핵심은 레퍼런스를 받아 객체를 사용할 때는 해당 객체가 직접 변하기 때문에

해당 객체는 그대로 두고 for 문 등에서 모든 처리가 다 된 다음에 synchronized 하게 객체를 최종적으로 변환시키라는것 같습니다.

'Programming Languages > Java' 카테고리의 다른 글

Java 파일 저장  (0) 2014.07.29
implements와 extends  (0) 2010.12.24
변수 짚고 넘어가기~!  (0) 2010.04.28
변수(2)  (0) 2010.04.27
변수(1)  (0) 2010.04.27
Posted by 독뽀
,

누가 정리해놓아서 퍼옵니다~

http://blog.naver.com/xse01234/20043305349

'Programming Languages > Java' 카테고리의 다른 글

Java 파일 저장  (0) 2014.07.29
ConcurrentModificationException  (0) 2013.11.22
변수 짚고 넘어가기~!  (0) 2010.04.28
변수(2)  (0) 2010.04.27
변수(1)  (0) 2010.04.27
Posted by 독뽀
,


1. "인스턴스 변수" 용어는 ___의 또 다른 이름이다.

2. "클래스 변수" 용어는 ___의 또 다른 이름이다.

3. 지역 변수는 임시 상태를 저장한다; 그것은 ___ 내부에서 선언된다.

4. 메서드 선언 시 열고 닫는 괄호 안에 선언되는 변수는 ___라 불린다.

5. 자바 프로그래밍 언어에서 제공하는 8가지 원시 자료형(primitive data type)은 무엇인가?

6. 문자열은 ___클래스에 의해 표현된다.

7. ___는 싱글 타입 값의 고정된 갯수로 묶인 컨테이너 객체이다.

아래에는 정답..

'Programming Languages > Java' 카테고리의 다른 글

ConcurrentModificationException  (0) 2013.11.22
implements와 extends  (0) 2010.12.24
변수(2)  (0) 2010.04.27
변수(1)  (0) 2010.04.27
자바 필수 상식 (2) - Object-Oriented Programming  (0) 2010.03.21
Posted by 독뽀
,

배열(array) 부터 나갈텐데 이제부턴 지겹게 글 쓰기 그만하고 실습 위주로..

 int[] anArray;    // 배열 선언
 anArray = new int[10];   // 배열 크기 할당

 anArray[0] = 100;
 anArray[1] = 200;
 anArray[2] = 300;
 // ... 이런식으로 배열 초기화 0부터 시작했으니 9까지 가능!

 System.out.println("anArray[0] : " + anArray[0]);   // 이런식으로 출력..

다른 방법으로 초기화 하기
 int[] anArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
 // {와 } 사이의 항목 갯수로 배열 크기 정해짐

다차원 배열
 class MultiDimArrayDemo {
    public static void main(String[] args) {
        String[][] names = {{"Mr. ", "Mrs. ", "Ms. "},
                            {"Smith", "Jones"}};
        System.out.println(names[0][0] + names[1][0]); //Mr. Smith
        System.out.println(names[0][2] + names[1][1]); //Ms. Jones
    }
 }

실행 결과
 Mr. Smith
 Ms. Jones

빌드 타임에(built-in) 정해지는 배열의 크기를 알아보기(위의 다른 방법으로 초기화하기처럼 자동으로 정해진 배열)
 System.out.println(anArray.length);

 



배열 복사하기!

arraycopy method 원형!
 public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)
 /**
 Copies an array from the specified source array, beginning at the specified position,
 to the specified position of the destination array.
 */

바로 실습!!
 class ArrayCopyDemo {
    public static void main(String[] args) {
        char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' };
        char[] copyTo = new char[7];

        System.arraycopy(copyFrom, 2, copyTo, 0, 7);
        System.out.println(new String(copyTo));
 }

실행 결과
 caffein

'Programming Languages > Java' 카테고리의 다른 글

implements와 extends  (0) 2010.12.24
변수 짚고 넘어가기~!  (0) 2010.04.28
변수(1)  (0) 2010.04.27
자바 필수 상식 (2) - Object-Oriented Programming  (0) 2010.03.21
자바 필수 상식 (1) - Some questions  (0) 2010.03.13
Posted by 독뽀
,

원시 자료형(Primitive Data Types)

  • byte: 8비트 부호 있는 2의 보수형 정수. -128~127 (0까지 총 256 = 2의 8승) 표현 가능. byte 자료형은 큰 배열에서 메모리 공간 절약에 문제가 있을 때 사용하기에 매우 유용하다. 사용하는 integer 자료형 변수의 한계 값이 -128~127임이 명확할 때 int를 대신해서 사용하는 것이 좋다.

  • short: 16비트 부호 있는 2의 보수형 정수. -32,768~32767 (0까지 총 65536 = 2의 16승) 표현 가능. byte 자료형과 사용 방향은 같다.

  • int: 32비트 부호 있는 2의 보수형 정수. -2,147,483,648~2,147,483,647(0까지 총 4294967296 = 2의 32승) 표현 가능. 사용 방향은 위의 두 자료형과 같다. 일반적으로 프로그램 상에서 사용되는 정수들은 int형의 범위 내에 있는 경우가 많기 때문에 많이 사용된다. 만약 2의 32승을 넘어가는 범위의 데이터가 사용될 경우 long 자료형을 사용한다.

  • long: 64비트 부호 있는 2의 보수형 정수. -9,223,372,036,854,775,808~9,223,372,036,854,775,807(0까지 총 18,446,744,073,708 = 2의 64승) 표현 가능. int 자료형의 범위를 벗어난 경우 사용한다.

  • float: 32비트 단정도(단일 정밀도: single-precision) 부동 소수. IEEE에서 규정된 국제표준안(IEEE 754)

     bit31 (최상위비트)  부호비트 (1비트)
     bit30~bit23  지수 (8비트)
     bit22~bit0  밑 (23비트) 

    화폐(통화량)같은 정밀함이 요구되는 곳에서는 사용되지 않는다. 그 상황에서는 java.math.BigDecimal 클래스를 대신 사용할 필요가 있다. NumbersStrings 클래스 등 BigDecimal과 다른 유용한 클래스는 자바 플랫폼 상에서 제공된다.

  • double: 64비트 복정도(복수 정밀도: double-precision) 부동 소수. IEEE에서 규정된 국제 표준안. 10진수 값을 사용할 때 기본적인 선택 사항 자료형이다. float과 마찬가지로 화폐같은 정밀함이 요구되는 곳에서는 사용되지 않으며 다른 클래스를 이용한다.

  • boolean: true(참), false(거짓) 두가지의 데이터 타입만 표현 가능. 참/거짓 판별용 플래그로(옵션같은 용도의 의미) 사용. 1비트 정보만 표현하지만 그 크기는 그렇지 않다.

  • char: 16비트 단일 유니코드 문자. '\u000' (또는 0) ~ '\uffff' (또는 65,535) 표현 가능.



    field 기본 값(Default Values) - 지역 변수는 해당되지 않는다.(초기화 없으면 에러)

     Data Type  Default Value (for fields)
     byte  0
     short  0
     int  0
     long  0L
     float  0.0f
     double  0.0d
     char  '\u0000'
     String (or any object)  null
     boolean  false
 



상수(Literals)


위에서 본 원시 자료형은 계산 요청 없이 직접적으로 대입되는 것을 말한다.
정수형 자료형은(byte, short, int, long) 일반적으로 10진수 표현에 사용되며 다음과 같이 표기하면 8진수와 16진수도 표현 가능하다.

int decVal = 26;              // 10진수
int octVal = 032;             // 8진수
int hexVal = 0x1a;          // 16진수

부동소수형 자료형은(float, double) E나 e와 함께 표현이 가능하다.(과학적인 표기법)

double d1 = 123.4;
double d2 = 1.234e2;      // d1과 같다. 과학적인 표기법 사용.

문자형 자료형은(char, string) 시스템에서 유니코드가 허용되면 바로 사용이 가능하다. 그렇지 않은 경우에는 유니코드 탈출문자를 표기함으로써 사용 가능하다.

'\u0108'                       // capital C with circumflex
"S\u00ED se\u00F1or"  // Sí Señor in Spanish

자바 언어에서도 역시 몇몇의 특수 탈출 문자를 제공한다.

\t (탭 공백: tab) \n (줄 바꾸기: line feed) \f (폼 피드: form feed) \r (맨 앞으로: carriage return)
\" (큰 따옴표: double quote) \' (작은 따옴표: single quote) \\ (역슬래시: backslash)

어떤 참조형에서도 사용 가능한 특수 null 상수값은 원시 자료형 변수를 제외하고는 어떤 변수로도 대입될 수 있다. 존재 여부 등에서 사용될 수 있으므로 몇몇의 객체가 사용 가능한지 판별하는데 사용된다.

특별한 상수로 취급되는 타입명과 '.class'가 추가되는 클래스 상수(class literal) 또한 있다. 예: String.class
이것은 타입 자신을 표현하는 객체를 참조한다.

'Programming Languages > Java' 카테고리의 다른 글

변수 짚고 넘어가기~!  (0) 2010.04.28
변수(2)  (0) 2010.04.27
자바 필수 상식 (2) - Object-Oriented Programming  (0) 2010.03.21
자바 필수 상식 (1) - Some questions  (0) 2010.03.13
Hello World!  (0) 2010.03.13
Posted by 독뽀
,

자바는 객체 지향(Object-Orient) 언어이다.
객체 지향 언어는 현실 세계와 매우 밀접하다. 나는 객체 지향의 목표도 바로 그것이라 생각한다!
객체 지향에는 여러 특성이 있지만 기존의 절차 지향 언어(C언어 등)와 확연히 구분되는 것을 요약해본다.
아래 내용은 C++/JAVA 가리지 않고 공통되는 내용이니 참고했으면 한다.

(25th May, 2010)
술먹고 순식간에 써내려갔던거라 상속의 내용이 무관한 부분만 얘기하여 수정

① 상속(Inheritence)

- 클래스(Class)란 객체(Object)의 선언과 정의이다. 클래스가 객체를 생성할 수는 있어도 객체는 클래스를 생성할 수 없다. 클래스는 자신의 상태(member fields - 이하 속성)와 행동(member method/function - 이하 기능)을 갖고 있다. 반드시 모두 가질 필요는 없지만 절차지향형 프로그래밍 언어와 구분되는 점이 바로 이런 동시에 속성과 기능을 가지는 것이다. 절차지향의 경우 기능에 초점을 두기 때문에 속성들을 따로 관리한다. 하지만 객체지향에서는 속성과 그 속성을 가지고 할 수 있는 일들을 속성이 포함된 클래스에 함께 정의한다. 속성과 기능이 함께 관리되어질 수 있는 이 개념이 클래스를 가장 쉽게 설명할 수 있을 것 같다. 여러 프로그래밍 언어마다 틀리지만 클래스는 프로그래밍 상에서 메모리 공간에 올라가기 보다는 선언/정의를 참조하여 객체를 생성하는 용도로 쓰인다. 실제로 메모리 공간에 올라가는 내용이 바로 객체라는 말이다. 하나의 클래스로 여러 객체를 만들 수 있다. 객체가 붕어빵이라고 하면 클래스는 붕어빵 틀 정도로 보면 되겠다. 그렇다면! 조금 다른 모양의 붕어빵을 만들고 싶다면 우리는 어떤 작업을 해야할까? 새로운 붕어빵 틀을 구매해도 될 것이고 붕어빵 틀을 열심히 다듬어서 다른 모양으로 바꾸어도 될 것이다. 기존 붕어빵 모양은 이제 더 이상 생산할 필요가 없는 경우가 아니라면 후자보다는 전자가 더 우리에겐 더 좋아보인다. 붕어빵 틀을 개조할 정도의 능력이라면 말이다. 하지만 프로그래밍에서는 전자보다 후자가 더 이득이다. 왜냐하면 우리의 소스코드들은 복사가 가능하기 때문이다! 단순히 복사만 해서는 생산적인 경우가 별로 없을 것이다. 기존 클래스에서 그대로 쓸 내용은 그대로 쓰고 추가만 해야할 경우, 우리는 상속이라는 멋진 개념을 사용할 수 있다. 말 그대로이다. 상속은 붕어빵 틀을 이용해서 두머리 붕어빵, 세머리 붕어빵, 녹색 붕어빵 등 다양하게 사용 가능하게 한다. 추가할 수도 있고, 삭제할 수도 있다. 기능(method/function)을 수정하는 경우에는 오버라이딩(Overriding)한다 라고 말한다.
우리가 프로그래밍 언어에서 상속을 이야기 할 때는
자식이 부모를 상속한다.
부모가 자식에게 상속되어진다.
라고 표현한다.

이 클래스와 객체의 개념은 다형성과 연결된다.

참고 : 부모 클래스는 슈퍼 클래스와 같은 말이며 자식 클래스는 서브클래스와 같은 말이다.

② 다형성(Polymorphism)과 추상화(Abstract)

- 앞서 본 클래스는 객체들의 공통 속성을 가지고 있을 것이다. 사람 클래스를 예로 들자면
남자든 여자든 이름을 가질 것이며, 인종, 태어난 곳, 태어난 시간 등이 생성되는 순간 결정될 것이다.
사람(클래스)의 하나인 똘이(객체)를 프로그램상에 구현한다고 하자.
클래스에서 정의된 내용 외에 생김새라던지 이 객체에 맞도록 추가하거나 변경되는 내용들이 있다.
상속이 불가능하다면 객체 생성마다 매번 새로운 클래스를 정의하고 객체들을 만들어야 할 것이다.
그 객체들마다 앞에서 정의한 이름, 인종, 태어난 곳, 태어난 시간 등을 불필요하게 계속 다시 정의해야할 것이다.
또한 맹구와 영구라는 객체를 생성했을 때 이들이 하는 행동이 모두 같지는 않을 것이다.
이를테면 맹구는 전속력으로 달리면 8m/s의 속도를 내고 영구는 7m/s의 속도를 낸다고 하자.
맹구.전속력달리기() 의 값이 8이고,
영구.전속력달리기() 의 값은 7이다.
전속력달리기() 는 행동이며 사람 클래스의 공통 메서드이다.
(메서드(Method)란 함수(Function)와 동일한 뜻이며 C/C++에서와는 달리 자바에서는 메서드라고 부른다.)
그런데 맹구는 전속력달리기를 하면 보폭이 커지는 반면, 영구는 보폭은 좁아지지만 속도가 빨라진다.
같은 전속력달리기 메서드이지만 영구 객체를 정의할 때 기본적인 속력에 관한 부분은 기정의된 내용을 따르고
추가로 이런 내용을 입력할 것이다.
이것이 바로 다형성이다.
객체 지향언어에서의 다형성은 오버로딩(Overloading)에서 명확해지는데,
매개변수(Parameters)를 다르게 하여 같은 이름의 함수를 계속 정의할 수 있다는 것이다.
(리턴 타입은 다르게 해도 오버로딩되지 않는다.)
공개된 공통 메서드나 공용 콘트롤(추상화-Abstract)은 인터페이스(Interface)를 사용 가능하게 한다.
추상화 되어있는 클래스를 이제는 사람 뿐 아니라 사자, 코끼리 정도로 확대해보자.
이들은 포유류라는 클래스 혹은 생물이라는 클래스에서 파생되었을 것이다.
사람, 사자, 코끼리는 모두 전속력달리기() 메서드를 가질 수 있다.
그렇다면 프로그래머는 포유류 혹은 생물 클래스의 공용 콘트롤을 알게 됨으로써
전속력달리기()라는 메서드를 인터페이스로써 각 객체에 동일하게 사용할 수 있다.

참고: 자바에서는 interface와 abstract라는 키워드를 제공하지만 C++에서는 순수 가상 함수 등을 이용해 추상화 클래스를 만들어 사용한다.

참고: 오버로딩과 오버라이딩, 둘의 공통점이라면 이름이 같은 메서드를 사용한다는 것이고, 오버로딩은 매개변수의 타입이나 갯수가 다를 때 각기 다른 메서드로 인식하게끔 한다는 것이다. 오버라이딩은 재정의다. 기존 메서드를 재정의함으로써 덮어버리고(ride) 내 것을 쓴다는 개념이다.

③ 캡슐화(Encapsulation)

- 캡슐화는 정보 은닉(Inform hiding)을 말한다. 생성한 각 객체들은 변수와 메서드로 이루어져 있을 것이다.
이 변수와 메서드는 클래스를 정의한 곳을 보면 각 값들에 대한 접근 권한을 알 수 있는데
public, protected, private이 권한에 대한 키워드이다.
public는 외부에서 어느 객체든지 접근할 수 있다.
protected는 외부에서 객체 자신만이 접근할 수 있다.
private는 외부에서 접근이 불가능하다.
캡슐화로 인해 굳이 외부에 노출되지 않아도 되는 정보나
사용자가 굳이 알 필요가 없는 정보를 private나 protected 등으로 감춤으로써 보안의 정도가 상승된다.

보통 API에 캡슐화가 많이 적용된다.
굳이 로우레벨의(시스템의 깊숙한 작동 원리 등) 동작을 몰라도 우리가 사용할 수 있게 하는 것,
캡슐화가 잘 되어있을 수록 우리는 모르는게 많아지겠지만 그만큼 편리해진다고도 생각해볼 수 있다.

참고 : 아무것도 안적으면 자바는 default(같은 패키지 내에서만 접근 가능, 상속 여부 무관)로 선언이 되며, C++에서는 private으로, Objective-C에서는 protected로 선언 된다.

자바의 퍼포먼스

자바는 흔히 퍼포먼스가 좋지 않다는 말을 많이 한다.
자바는 컴파일을 하면 Bytecode로 된 .class 파일을 생성하는데 class 파일은 앞 장에서
말한 JVM을 이용해서 실행 가능하다.
JVM은 OS나 Platform에 대해 굉장히 유연하다. JVM만 설치된다면 어디서든 실행이 가능하다는 말이다.
이 VM의 요소 중 퍼포먼스를 떨어뜨리는 요인은 GC(Garbage Collection)에 있다. GC는 프로그램 종료 시 사용하지 않는 메모리를 시스템에 반환해주는 역할을 한다. 기존의 C나 C++은 malloc()/free() 나 new/delete 로 메모리 공간을 프로그래머가 확보한 경우 프로그래머가 삭제를 해야만 정확히 반환이 된다. 이 말은 프로그래머가 OS에게 메모리를 내놓으라고 했으면 마무리도 프로그래머에게 책임이 있다는 뜻이다. 자바는 이런 오류가 발생할 확률을 줄이고자 GC를 내놓았다. GC는 자동이며 억지로 호출은 가능하나 JVM에서 정의된 내용대로 행동하기 때문에 콘트롤은 불가능하다. JVM을 뜯어고친다면 모를까..
쨌든! 자바를 공부하기 시작했다면 이 정도는 알고 있기를 바라며 마무리~

참고 : 안드로이드 플랫폼에서 주로 자바로 개발한다는 말을 많이 들었을 것이다.
당연히(?) 안드로이드 플랫폼에도 VM(Virtual-Machine)이 있다.
하지만 PC용 JVM을 사용하기에는 덩치가 너무 커서 간소화(?) 버전인 Dalvik Virtual Machine 이 사용된다.
역시 JDK가 아닌 Android SDK가 사용된다.
실행 파일 역시 .class가 아닌 .dex (Dalvik EXcutable) 파일이 사용된다.
자바 문법이 대충 끝날 때 쯤 안드로이드도 시작해볼까 한다. ㅎㅎ
아마도 JavaFX도 같이 시작되지 싶다.

'Programming Languages > Java' 카테고리의 다른 글

변수(2)  (0) 2010.04.27
변수(1)  (0) 2010.04.27
자바 필수 상식 (1) - Some questions  (0) 2010.03.13
Hello World!  (0) 2010.03.13
EditPlus에서 Java 컴파일, 실행하기  (0) 2010.03.09
Posted by 독뽀
,

1. public static void main(String args[])

위의 main method 원형은 꼭 외워두도록 하자.
개발툴에서 자동으로 만들어주기도 하지만 한줄정도야 외워주도록 하자;

2. public과 static은 순서가 바뀌어도 상관이 없다.

하지만! 역시나 Tutorials에서는 관례적으로 public static의 순서를 지키기를 권고한다.

3. Exception in thread "main" java.lang.NoClassDefFoundError:
HelloWorld.java.


위와 같은 에러가 났다면 무엇이 문제일까?
에러 내용은 classpath(클래스 경로)가 잘못되었다는 것이다.

HelloWorld를 실행하는데 문제가 발견되었다면 아래를 참고하기 바란다.

Windows 환경에서 javac를 사용하기 위해서는 환경 변수 등록이 되어있어야 어느 경로에서든지 실행가능하다.
xp에서는 내 컴퓨터>등록정보>고급>환경 변수
windows7에서는 윈도우탐색기>컴퓨터>등록정보>고급 시스템 설정>환경 변수
(참고: xp, 7 공통 단축키 <시작키>+<Pause Break>)



시스템 변수(S) 아래의 Path를 더블클릭 혹은 편집(I)을 선택한다.



위 스크린샷에는 짤렸지만 ;C:\Program Files\Java\jdk1.6.0_18\bin; 라고 되어있다.
jdk버전\bin 폴더에 javac.exe와 java.exe가 있기 때문에..
;(세미콜론)은 시스템 변수 값들을 구분하기 위한 구분자이다.. 자세히 알 필요는 없다.
본인이 설치한 jdk에 맞게 설정해야한다. 무작정 위와 같이 하면 안되니 주의!

'Programming Languages > Java' 카테고리의 다른 글

변수(1)  (0) 2010.04.27
자바 필수 상식 (2) - Object-Oriented Programming  (0) 2010.03.21
Hello World!  (0) 2010.03.13
EditPlus에서 Java 컴파일, 실행하기  (0) 2010.03.09
개발 환경 설정  (0) 2010.03.09
Posted by 독뽀
,

어떤 프로그래밍 언어든 간에 일단 찍고 보는 것이 헬로월드;
남들 하는거 다 따라갈 필요는 없어도 가장 보편적인 접근이니 여기서도..

 /**
  HelloWorld.java
 */

 public class HelloWorld {
       public static void main(String[] args) {
               System.out.println("Hello World!");
       }
 }





 public class HelloWorld {
       public static void main(String[] args) {
               System.out.println("Hello World!");
       }
 }

파일명과 동일하게 한다.(대소문자 구분!)
클래스 이름을 작성.

 public class HelloWorld {
       public static void main(String[] args) {
               System.out.println("Hello World!");
       }
 }

모든 java application은 main method를 가지고 있어야한다.
String[] args는 명령 인수(command-line argument)를 받을 때 사용한다.
물론 실행 시 명령 인수를 입력하지 않으면 무시.
args는 String형 변수명인데 아무거나 써도 상관은 없다.
하지만 Tutorials을 보면 대부분의 프로그래머가 args나 argv를 선호한다고 한다.

 public class HelloWorld {
       public static void main(String[] args) {
               System.out.println("Hello World!");
       }
 }

여길 보면 .(dot)이 많이 찍혀있는데 이것은 클래스의 라이브러리를 참조할 때 사용한다.
System은 java의 core library(핵심 라이브러리)에 있는 클래스이다.
standard output을 통해 출력을 하기 위해 사용되었다.

이 라이브러리들은 모두 Application Programming Interface(API)에 포함되어 있는데
우리가 설치한 JDK에 포함된 API들이다.
자세한 내용은 지금 봐도 별 도움 안된다. 나중에 보기로 하자!

Java는 Java Virtual Machine(JVM)과 Bytecode란 녀석때문에 platform-independent(플랫폼 독립적)이다.
Bytecode는 Java파일을 컴파일 했을 때 JVM이 읽을 수 있는 언어로 되어있다.
이 Bytecode와 JVM이 있으면 어느 platform(혹은 OS)에서도 실행될 수 있다.
그렇기에 이 개념은 매우 중요하다!

작성한 자바 파일을 실행하기 위해서는 바이트코드 형태로 컴파일 한 후 JVM에서 실행하면 된다.
IDE(통합개발환경) 툴이 없을 경우 명령 프롬프트에서 javac 파일명.java 를 하면 컴파일 된다.(대소문자 반드시 일치)
성공적으로 컴파일이 되면 파일명.class 파일이 생기며 이를 실행할 때는 java 파일명(확장자 없다.)을 하면 된다.

'Programming Languages > Java' 카테고리의 다른 글

변수(1)  (0) 2010.04.27
자바 필수 상식 (2) - Object-Oriented Programming  (0) 2010.03.21
자바 필수 상식 (1) - Some questions  (0) 2010.03.13
EditPlus에서 Java 컴파일, 실행하기  (0) 2010.03.09
개발 환경 설정  (0) 2010.03.09
Posted by 독뽀
,


일단 에디트 플러스 실행..


그림에서 보이는 사용자 도구 구성(C)... 클릭!



추가(D) >> 프로그램(P) 클릭!



메뉴제목: JavaCompiler (원하는 이름 입력)
명령(O): javac (컴파일하는 명령)
인수(E): ▼ 누르고 파일 이름 선택
디렉토리(I): ▼ 누르고 파일 디렉토리 선택

적용(A) 누르고 또 추가(D) >> 프로그램(P) 클릭!

다음과 같이 다시 입력
메뉴제목: JavaRun
명령(O): java (실행하는 명령)
인수(E): ▼ 누르고 확장자를 뺀 파일 이름 선택
디렉토리(I): ▼ 누르고 파일 디렉토리 선택

이제 확인하면 끝~

기본적으로 단축키가 Ctrl+1(컴파일), Ctrl+2(실행)으로 저장된다.

(추가) 위의 두 과정에서 출력 내용 캡쳐(U)에 모두 체크하게 되면 콘솔창(도스 창) 또한 에디트 플러스 내에서 확인 가능하다!

'Programming Languages > Java' 카테고리의 다른 글

변수(1)  (0) 2010.04.27
자바 필수 상식 (2) - Object-Oriented Programming  (0) 2010.03.21
자바 필수 상식 (1) - Some questions  (0) 2010.03.13
Hello World!  (0) 2010.03.13
개발 환경 설정  (0) 2010.03.09
Posted by 독뽀
,