728x90
반응형

1. 자바의 특징

 

이번 블로그에서는 자바의 특징에 대해서 설명하겠습니다. 먼저 자바의 대표적인 특징 6가지 입니다. 

 

 

 

① P/I (Platform Independent)
② OO (Object - Oriented)
③ GC (Garbage Collector)
④ MT (Method Threading)
⑤ Exception

⑥ Security

 

 

 

 

자바는 어떤 플랫폼이든 한번 작성한 프로그램을 사용할 수 있는 플랫폼에 대한 독립성을 가졌습니다. 이는 JVM이라는 가상머신이 각각의 O/S로 전달을 해주기 때문입니다. 

또한 자바는 객체지향언어의 가장 큰 장점은 Reuse입니다. 자바에서는 클래스라는 단위의 프로그램을 만들어 Reuse하게 되는데 바로 뒤에서 자세하게 설명 하겠습니다. 3번은 Garbage Collector입니다. 프로그램이 동작하는 중 메모리에 적재된 인스와 메서드가 많을경우 자원이 모자라는 경우가 있을 수 있습니다. 그때 자바는 자동으로 Garbage Collector가 실행되어 instance영역와 s1, s2영역의 Garbage를 처리하게 됩니다. Method Area로 가지 않는 것이 가장 큰 특징이며 이것에 대한 이야기도 진도가 나간 후에 자세하게 하도록 하겠습니다. 네번째 는 메서드별로 스레드를 점유해서 사용한다는 것입니다. 다섯번째는 탁월한 예외처리이며 여섯번째로는 보안에 강력하다는 점 입니다. 간략하게 자바에 대해서 설명하기전에 가장 대표적인 장점에 대해서 나열해 보았습니다. 이제 Java를 어떻게 사용하는지에 대해서 알아보겠습니다.

 

 

 

 

 

 

2. Java Programming

 


드디어 자바를 이용하여 프로그래밍에 첫 발을 내딛어 보겠습니다. 먼저 자바의 프로그램 단위는 Class입니다. 몇일 전에 말씀들린 .class파일이 바로 기본 단위가 되는 것입니다.  우리가 코드를 작성하여 .Java파일로 저장하게 됩니다. 저장하여 javac 명령어를 이용해서 클래스파일로 만드는 과정을 그림으로 다음과 같이 나타낼 수 있습니다.

 

 

 

 

초보부터 실무자들 까지 대부분의 자바개발자들은 보통 자바는 이클립스(www.eclipse.org)를 이용해서 코딩를 합니다. 자바언어에는 따로 에디터가 정해져 있지 않아 텍스트를 작성 할 수 있는 모든 에디터를 사용하여 저장만 .java로 하면 되기 때문입니다. 이클립스를 많이들 쓰는 이유는 자동완성을 이용하여 코드를 빠르게 작성할 수 있고 많은 툴을 제공하기 때문입니다. 

 

저는 이번 예제에서 Hello.java 파일을 메모장으로 작성하여서 cmd창을 이용해서 javac컴파일러를 구동하였는데요. 그 이유는 컴파일"만" 하는 모습을 보여드리고 싶어서 입니다. 이클립스에서는 

  이렇게 생긴 Run 버튼을 이용해 컴파일과 클래스파일을 JVM에 로드를 함께 하기 떄문에 class파일을 접할 수 없습니다.  (파일은 저장되어 있지만 대부분 경로를 찾아가서 class파일을 확인하는 경우는 거의 없음) javac명령을 통해 성공적으로 컴파일이 되면 그림과 같이 아무것도 적히지 않은 줄 한줄이 보이게 됩니다. 그럼 이제 클래스 파일을 JVM에 로드시켜서 실행시켜 보겠습니다. 

 

 

 

 

 

 

 

 

 

성공적으로 Hello.class파일을 실행시키면 다음과 같이 실행의 결과가 보여지게 됩니다. 컴파일 이후에는 Hello.class에 확장자를 제외한 Hello라는 클래스 명을 java 뒤에 적어주게되면 실행이 완료 됩니다. 저는 다음과 같이 코드를 작성하였습니다.

 

 

 

 

 

 

 

 

제가 작성한 Hello 라는 클래스 입니다. 우리가 코드에서 보이는 바와 같이 Class는 자바프로그램에 기본 단위가 됩니다. 그리고 /* */ 안에 들어있는 글씨들은 우리가 java의 명령어를 실행했는데도 보이지 않았죠? 바로 이것을 주석이라고 합니다. 프로그래밍을 하면서 필요한 정보들을 주석안에 작성하면 작성은 되었지만 JVM은 주석을 제외한 나머지 코드들을 컴파일하기 떄문에 보이지 않는 것 입니다.

 

 

 

 

 

 

 

3. 클래스

 

 

 

왼쪽 그림과 같이 클래스를 명명할 때 다음과 같은 규칙에 따라서 클래스의 이름을 정해야 합니다. 클래스 명명에 대해 예제를 통해 알아보겠습니다.

 

Ex) 1Hello ( x ) ----------Hello1( o )

- 숫자를 삽입할 수는 있지만 클래스의 이름 처음에는 넣을 수 없습니다.

 

Ex.2) Hello  <---------->hello

- 클래스는 대소문자를 구별하여 Hello와 hello는 다른 클래스입니다.

 

Ex.3) New ( x ) , Int( x ) . . .

- 자바에서 이미 사용하고 있는 예약어들은 클래스의 이름으로 사용할 수 없습니다.

 

Ex.4) get Name ( x )

- 클래스 이름에서 띄어쓰기는 허용되지 않습니다.

 

Ex.5) #name ( x ) drive^ ( x )

- 클래스의 이름을 만들 때 특수기호는 허용되지 않지만 예외적으로 $와 _는 허용됩니다.

 

 

 

위 다섯가지 사항은 꼭 지켜야하는 필수사항입니다. 하지만 꼭 지키진 않아도 되지만 지향하는 클래스의 이름을 정하는 규칙이 있는데요. 

그 중 첫번째는 클래스명의 첫 문자는 대문자로 사용하는 것입니다. 그리고 두 단어 이상이 연결될 경우 이어서 나오는 단어의 첫 문자 역시 대문자로 쓰는 것입니다. 이것을 낙타표기법(CamelCase)라고 합니다. 예를 들면 Class VipCustomer 라는 이런 경우가 있습니다.

 

 

 

 

 

 

 

 

 

클래스는 <2. Java Programming>에서 말씀드렸듯이 프로그램을 구성하는 단위입니다. 클래스명을 정하는 법을 배웠으니 클래스의 구성요소를 어떻게 사용하는지에 대해서 배워보도록 하겠습니다. 클래스는 Data와 Method로 구성되어 있는데요.  클래스의 구성요소인 데이터와 메서드가 메모리의 어떤 위치에 적재되는지 알아보겠습니다. 데이터와 메서드는 모두 Stack을 제외한 Instance Area와 Method Area에 올라가기 위해서는 꼭 객체가 생성되어야만 합니다. (Static 제외) 아직 객체라는 개념을 배우지 않았으니 객체가 생성되었다는 가정하에 클래스의 멤버들이 메모리에 올라가는 위치는 다음과 같습니다.

 

 

 

 

 

 

앞에 보시던 메모리 그림에서 조금 수정을 하였습니다. 새로운 객체를 생성하는 Eden영역이 그림상 Instance영역 모두를 표기하였고 PC Register와 Non-heap영역은 프로그래밍과는 조금 관련이 덜 하기 때문에 제외하였습니다. 또한 final영역은 진도상 아직 많이 남았기 때문에 편의상 당분간은 이 메모리의 그림을 사용하겠습니다.

 

클래스에 관해서 설명하기 위해서는 객체지향의 개념이 필수적으로 필요하기 때문에 아직 객체지향에 대해서 공부하지 않았기 때문에 객체지향에 대해서 설명드리며 클래스에 대해서 조금더 보충 설명을 드리겠습니다. 

자꾸 메모리에 적재되는 것을 이야기 하는 이유는 메모리의 적재순서를 이해한다면 객체지향언어인 자바를 이해하시기에 훨씬 더 수월하시기 때문입니다. 코드 대부분을 메모리에 적재시키는 얘기를 할텐데 그림으로 조금 서툴더라도 이해해주시면 감사하겠습니다. 블로그 보시다가 이해가 안되시는 부분이 있으면 댓글 달아주세요. 아는만큼 최대한 답변드리겠습니다.  이제 그리고 블로그가 정착하는 단계라 조금씩 빠진부분이나 햇갈리는 부분이 있는 것 같아 글 마지막에 요약을 조금 하고 끝내려고 합니다.

 

 

 

 

 

 

 

 

 

1. 자바의 특징 : Java언어의 6가지 특징에 대해서 자세히 살펴보고 Java가 추구하는게 어떤 프로그래밍인지 생각해보자!

 

2. Java Programming : javac, java 명령어를 입력했을 때 생성되는 파일을 기억하자!

 

3. 클래스 : 클래스의 이름을 지어주는 규칙과 클래스가 메모리에 어디에 올라가는지 알고 가자!

 

 

728x90
반응형

+ Recent posts