1. 처음으로 코드 작성해보기 - System.out.prinlin(" ");
public class HelloWorldApp {
//C언어의 int main(void) 함수 역할을 하는 녀석
public static void main(String[] args) {
//println = print line
System.out.println("hello World!!");
}
}
>> 결과
Hello World!!
2. 소스코드 컴파일링 & 실행
[방법1.에디터 미사용] 메모장을 이용해 컴파일 후 실행하기
* C언어에서는 clang 또는 make 명령어를 사용해서 컴파일을 했다면, JAVA는 javac를 사용해 컴파일을 한다.
가. cmd 경로 변경 : 소스코드(.java)가 있는 위치로 가기
**폴더명 다 치지 않고 일부만 친 후 + tab치면 알아서 폴더명 잡아줌
1) 폴더 하나씩 cd + 폴더명 칠 수도 있고
2) 한 줄로 다 칠 수도 있고
3) 폴더 경로 드래그에서 붙일 수도 있다.
나. 컴파일 하기 : javac/javac.exe + 자바파일명.java (ex. java.exe Hello.java)
*컴파일이란? 고급언어인 소스코드를 저수준언어로 변환하는 과정
*저수준 언어 = 실행파일 = binary code = byte code : .class형태로 저장된 파일 내용
1) javac.exe Hello.java 입력
2) javac Hello.java 입력
[※ 참고하기 : .java와 .class 의 구성내용 확인]
- 코드내용을 확인할 때 --- type 명령어 사용 ex. type Hello.java
- 아래를 보면 type Hello.java를 했을 땐 소스코드를 볼 수 있고,
- type Hello.class를 했을 때 알 수 없는 코드가 나오는 걸 볼 수 있다.
- 컴퓨터 공학에서 배웠던 C언어 컴파일링의 단계는 총 4단계로,
1) 전처리(Precompile) : 실질적인 컴파일링 전 #include와 같이 #이 들어간 코드에 대한 선작업을 먼저 해준다.
2) 컴파일(Compile) : 어셈블리어라는 저수준 프로그래밍 언어로 컴파일
3) 어셈블(Assemble) : 어셈블리 코드를 오브젝트 코드로 변환시켜주는 것. 중앙처리장치가 이해할 수 있는 0,1로 변경
4) 링크(Link) : cs50.h나 math.h와 같이 여러개의 파일로 이루어진 경우, 이를 하나의 오브젝트 파일로 연결
였다. 위에서도 보면 컴파일을 하게 되면 저수준 언어로 변경되는 걸 볼 수 있다.
[※ 추가 참고하기 : 프로그래밍 언어의 발전 역사] 1세대 언어 : 어셈블리어 (기계와 밀접한관계) 2세대 언어 : 인터프리터 (실시간 해석언어) - html, javascript 브라우저가 한줄씩 해석 3세대 언어 : 컴파일러 언어 ** C언어는 소스코드를 컴파일(전체 해석)하고 컴파일한 것을 컴퓨터가 바로 실행 ** 자바는 JVM이 소스코드 한줄에 대한 컴파일코드에 대해 한줄씩 실행 (인터프리터 장점 + 컴파일러 언어 장점) ** 컴파일러 언어는 속도는 빠르지만 실시간 한줄 실행이 아니라 메모리 공간을 크게 사용할 수 밖에 없음 ** 인터프리터는 실시간으로 해석하면서, 필요하면 공간을 만들고 아니면 안 쓸 수 있어 속도는 느려도 공간 활용이 좋음 |
[※ 참고하기 : .java 파일저장 및 컴파일 중 인코딩 타입 에러가 난 경우]
(ex. 한글을 넣었는데, 인코딩 타입이 UTF-8이 아니라 다른 거라며 버그가 나타남)
- javac -encoding utf-8 파일명.java
- 추가 참조 링크 : https://breathtaking-life.tistory.com/96
다. 실행하기 - java + 클래스파일명 (ex. java Hello)
- cmd에서 javac 명령어로 컴파일 할 때 확장자는 쓰지 않는다.
[방법2. 에디터 사용] 이클립스를 활용해 컴파일 후 실행하기
가. 이클립스 설치하기
- 다운로드 링크 : https://www.eclipse.org/downloads/packages/
나. 이클립스 실행하기 - 워크 스페이스 경로 설정
- 처음 이클립스 실행하면 디폴트 저장 경로를 설정할 수 있다.
다. 프로젝트 형성하기
1) File>New>Java Project
2) 프로젝트 설정하기
프로젝트 설정하는 순서
[1] 프로젝트명 : 프로젝트가 저장될 상위 폴더
[2] JRE환경 설정 : 실행할 때, 어떤 JRE 버전 쓸 건지
[3] Project layout : 첫번째는 소스코드와 실행코드가 같은 폴더 내에 위치, 두번째는 각각 src/bin폴더 내에 위치한다.
[4] [Next] 선택 후 [Apply and Close]하여 완료
//.java와 .class 저장 위치 수정하려면 properties>Java Build Path>Source로 가면 된다.
[※ 참고 : 외부 또는 내부에서 이클립스로 프로젝트 가져오기] 이클립스 에디터 사용한 프로젝트 가져오기 1. New>import>Exsting Projects into Workspace 2. 경로 지정하여 가져오기 이클립스 에디터 사용하지 않은 프로젝트 가져오기 1. new>project>java project 설정하고, 폴더명 경로 지정하여 가져오기 ※ 메모장으로 작성한 코드는, 가져올 경우 인코딩 타입에 따라서 한글이 깨질 수 있음. (원본 소스코드를 긁어 오는게 빠르다.) |
라. 작업 시작하기 - 클래스를 생성하자.
1) New > Class
2) 내용 작성하고 완료하기
마. 컴파일 하고 실행하기 : .java에서 ctrl+s를 하면 컴파일도 알아서 해준다. 실행은 재생 버튼을 누르기
* 이클립스 에디터를 사용하면, 굳이 cmd에서 명령어를 안 써도 소스코드 작성 후 ctrl+s만 눌렀을 때 알아서 컴파일을 해준다.
[참고 : 알면 좋은 내용들] 이클립스 프로그램 언어 확인 및 변경([x]하단) 1. 확인 : properties 우측 아이콘에 마우스 올리기 2. 변경 : properties 아이콘 더블클릭 이클립스 단축키 1. 폰트크기 : ctrl + shift + +/- 2. 전체화면 : 클래스명 탭(ex.*Hello.java) 더블클릭 3. 자동완성 : 코드요약 + ctrl + space (ex. "syso"작성 + ctrl + space = System.out.println();) 4. 주석지정 : 영역지정+ctrl+shift+/ 5. 주석해제 : 영역지정+ctrl+shift+\ (역슬래시) 6. 코드정렬 : ctrl+shift+F 7. 한줄끝으로 가기 : [end] 8. 들여쓰기 : tab / 내어쓰기 : shift+tab 9. 클래스 내 변수 확인 : ctrl + 코드명 10. import 클래스위치 자동입력/삭제 : ctrl+shift+o 11. 도움말 보는 방법(JRE라이브러리 확인) : " "드래그 + F4 12. 변수명 쉽게 바꾸는 단축키 ctrl+1 이클립스 환경 설정하기 1. 폰트 글꼴 바꾸기 - 언어마다 글자 너비 다름 [1] Colors and Fonts의 Text Edit 열기 : Window>Preferences>General>Apperance>Colors and Fonts>Basic>Text Font>[Edit] [2] 00체로 끝나는 글꼴로 설정 후 [확인] 선택 [3] [Apply and Close] 2. 도구창 보고 끄기 : Windows>Show View |
3. 자바의 동작 원리
(1) 소스와 프로그램이란?
가. 소스(Source) : 원천, 원인이라는 의미
= 기호, 부호라는 의미에서 코드로도 부름
= 의미를 전달하는 약속이라는 의미로 언어로도 부름
나. 앱(Application) : 소스코드로 작성한 결과물
= 프로그램
(2) 자바 소스가 프로그램으로서 동작하는 과정
JDK가 소스코드 컴파일링 -> JVM이 OS(ex.window)에 맞게 실행코드 실행 -> 컴퓨터 화면 |
※ 왜 자바는 컴퓨터공학에서 배운 C언어와 다르게 컴파일 후 컴퓨터로 바로 실행하지 않고, JVM을 사용해서 컴파일을 하고 실행을 할까?
4. 자바의 특징
- 참조 : [JAVA의 정석], 남궁성 지음
(1) 운영체제에 독립적이다.
: 자바 프로그램은 JVM을 통해서만 통신하여, 어느 운영체제이던 독립적이지만, 그만큼 운영체제에 종속적이다.
(2) 객체지향언어이다.
(3) 비교적 배우기 쉽다
(4) 자동 메모리 관리
: 가비지 컬렉터가 있어 자동적으로 메모리를 관리해준다.
pf. C언어의 경우 포인터와 malloc을 통해 힙 메모리 공간을 할당한 후, free()하여 메모리 할당을 해제했다.
(5) 네트워크와 분산처리를 지원한다.
(6) 멀티쓰레드를 지원한다.
(7) 동적 로딩을 지원한다.
: 여러개의 클래스로 되어 있어, 필요한 시점에 특정 클래스만 컴파일링 하거나 특정 클래스를 호출할 수 있다.
5. 자바로 만들 수 있는 것들
(1) JavaEE를 활용해 웹 작업 가능
(2) 안드로이드 앱 만들기
- android development document 를 구글에 검색해서 Android 프로젝트를 만드는 법을 읽자
- android studio 툴을 통해 앱을 쉽게 만들 수 있다.
- android studio 에서는 자바 언어 또는 코틀린을 통해 소스코드를 작성할 수 있음
(3) 하둡을 활용해 빅데이터 작업 가능
(4) 사물인터넷 (IoT, Inter of Things)
- 컴퓨터는 시대가 바뀌면서, FAST/CHEAP/SMALL 세가지 특성을 가지고 진화해왔다.
- 사물 인터넷은 전구, 커튼, 전동자전거 등에 내장된 진화된 작은 컴퓨터와 그를 제어하는 프로그램을 일컫는다.
- 라즈베리파이 : 교육용 소형 컴퓨터
- 자바를 통해 사물인터넷 프로그램을 만들 수 있다.
[참조]
- 블로그 (링크는 위에 있음)
- [자바의 정석], 남궁성 지음
- 생활코딩, 부스트코스
- 그 외 국비지원과정 수업 내용 참조
'Language > Java' 카테고리의 다른 글
[자바의 정석_복습] 객체지향 프로그래밍1 - 클래스(변수,메서드) (0) | 2022.02.24 |
---|---|
[자바의 정석_복습] Chapter5. 배열 -- String 문자열을 모스부호로 바꾸기 (0) | 2022.02.17 |
[쉽게 배우는 자바1_복습] 명령프롬프트에서 자바 실행하기 (0) | 2022.02.09 |
[자바_복습] 프로그램 실행구조/변수/연산자 (0) | 2022.02.02 |
[자바_복습] 자바 프로그램 설치 (0) | 2022.02.01 |