프로그래밍 언어는 크게 컴파일언어와 인터프리터언어로 나뉘어진다.
프로그래밍의 개요에 대해 알아보자.


프로그래밍언어

1. 컴파일

미리 기계어로 바꿔주고 전달 (도구: 컴파일러)
-> 속도 빠름, 일부에서만 작동

2. 인터프리트

실행되는 과정에서 실시간으로 변환 (도구: 인터프리터)
-> 속도 느림, 어디에서든 작동

JAVA 언어

1995년 제임스고슬링(games gosling)이라는 사람이 만들었고, 가전제품에 탑재할 수 있는 프로그램을 만들기 위한 목적으로 만들어 졌지만, 성공적이지는 못했음.

JAVA 프로세스

java언어 => 컴파일 => 프로그램(반 기계어 상태) => 인터프리트(JVM필요)=> 프로세스실행

  • Jdk(java development kit): 개발자 도구(jdk설치 시 자동적으로 jre도 설치된다)
  • Jre(java runtime environment): 자바프로그램 실행 도구

▶ Java는 컴파일과 인터프리트가 합쳐진 언어

▶ Java는 운영체제에 독립적인 프로그램
(즉, 사용자 마다 서로 다른 운영체제에 맞는 JVM만 설치하면 어디서든 실행가능)

명령프롬프트 확인

  • 해당경로에서 cmd 실행 : shift + 우클릭
  • cd.. : 상위폴더,
  • cd . : 현재폴더,
  • cd 파일명 : 경로이동
  • java -version : 설치된 자바 버전 확인
  • java -jar Omok_C.jar : 자바로 만든 .jar 파일을 실행하기 위한 명령어
    ( java –jar 파일명.jar )

    실제 사용자들은 이런 명령어들로 실행시키기 어렵기 때문에 해당 운영체제에서 바로 실행할 수 있게끔 파일을 보통 같이 제공받고, 사용자 컴퓨터 환경 변수에 JRE_HOME 을 설정을 잡아 두라고 함.



▶ 환경변수 설정

내 컴퓨터 -> 우클릭 -> 속성 OR window키 + pauseBreak -> 고급 시스템 설정 -> 환경변수 -> 시스템변수

  1. 새로만들기 ->변수이름: JAVA_HOME / 변수값: JDK설치경로 (ex)c:programfile\java\jdk)
  2. Path변수 편집 -> 변수이름 : JRE_HOME / 변수값 : JRE설치경로 (ex)c:programfile\java\jdk\bin)

환경변수 설정을 해두면 어느 경로 에서든 javac.exe, java.exe파일 사용이 가능하다.



▶ 개발환경 구축

운영체제에 맞는 JDK 설치
( 어느 환경에서든 자바 언어로 작성한 소스파일을 프로그램화 시킬 수 있음 )

▶ 소스파일 => (컴파일러)컴파일 => 프로그램

( 이때 상태는 기계어가 아님 / JVM(자바 가상 머신) 이 이해하는 코드 : 바이트코드 상태)

▶ 프로그램 => (자바 가상 머신(JVM)) => 작동 (기계어)

( JVM이 해당 운영체제에 맞는 기계어로 변환 시켜주기 때문에 어디서든 실행 가능하다. )

▶ 소스파일 실행

  1. 메모장 등의 편집기를 통해 코드 작성 -> .java 확장자로 저장
  2. 명령 프롬프트창(cmd)에서 컴파일 : javac (옵션) 파일명.java
    => 해당 클래스명으로 .class 확장자로 파일이 생성된다.(바이트코드파일)

Q. 명령어 자체가 안잡힘

A. 환경설정이 되지 않은 상태이다. 시스템변수에 JAVA_HOME // C:\Program Files\Java\jdk1.8.0_144를 추가해준다. ( bin폴더가 설치된 경로 ) -> Path 라는 변수의 경로 값을 변경: 기존 경로에 ;%JAVA_HOME%\bin; 을 추가

Q. 변환 실패

A. 코드상의 문제이다 문제점을 찾아 코드를 수정하자.

3 실행: java 클래스파일명 // 확장자는 붙이지 않는다.
▶ cmd창에서 시스템 변수 경로 확인 : echo %변수명%



▶ IDE(통합개발환경)

실제 프로그램 개발에서는 IDE(통합개발환경=개발툴)을 이용해서 프로그램 제작을 하게 된다. 그 중 여러 가지 종류가 있지만, 아래 두 가지 툴이 가장 많이 사용되고 있음.

  • Eclipse (무료)
  • IntelliJ (유료)
    ( eclipse 는 zip버전과 설치버전으로 받을 수 있다. )



▶ 코드 작성

코드는 기본적으로 클래스라는것 내부에 main메서드를 작성하는것을 기본으로 시작된다.

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

▶ main( String[] args)

String[] args 스트링 배열: 컴파일 후 실행 시 들어오는 옵션 값을 저장하는 스트링 배열(실행 시 인자 값)
ex ) java App aa
=> args[0] 을 출력하면 aa가 나온다. ( 공백으로 배열의 인덱스를 나눈다. )



▶ 이클립스(Eclipse)

컴파일 (ctrl + s)

이클립스에서는 저장과 동시에 컴파일이 실행된다. 즉 명령프롬프트에서 javac의 명령어를 사용하는 것과 같은 액션을 취하는 것이다.

실행 ( ctrl + f11 ) 또는 녹색run버튼

마찬가지로 명령프롬프트(cmd)에서 java 클래스명 으로 실행 하는것과 같은 액션이다.



▶ C계열 vs JAVA

C계열의 언어와 JAVA의 가장 큰 차이점은 GC(가비지 컬렉터)이다.

C

개발자가 직접 메모리에 접근하여 관리하기 때문에 잘못 관리될 경우 메모리의 누수가 발생할 수 있지만 잘 관리되었을 경우 빠르다.

JAVA

개발자가 메모리에 직접적인 접근을 할 수 없으며, JAVA가 알아서 메모리를 관리하고 가비지 컬렉션을 하기 때문에 개발자가 편하지만 이 때문에 프로그램이 무거워 질 수 있다.