
컴퓨터는 요리순서로 재료를 주면, 요리를 만들어내는 만능 요리 기계와 유사하게 어떤 소프트웨어 혹은 프로그램도 처리할 수 있는 만능 기계.
프로그래머가 소프트웨어를 개발하는 것은 요리 설계사가 요리를 개발하여 요리 순서를 작성하는 것과 같음.
프로그래밍언어는 컴퓨터가 실행할 프로그램을 작성하기 위한 언어.
컴퓨터의 CPU는 이진수(binary code)인 0과 1밖에 이해를 못하며 이진수 명령어들로 구성된 언어를 기계어라고 함.
사람이 기계어로 프로그램작성이 어려움 그래서 각 기계어의 각 명령어 ADD, SUB, MOVE 등 가급적 표현하고 쉬운 상징적인 니모닉 기호(mnemonic symbol)로 일대어를 대응시킨 어셈블리어가 만들어졌으나, 어셈블리어도 다루기 힘든 저급언어여서 효율적으로 표현이 가능한 pascal, Basic , c / c++ , Java 고급언어가 생김.
고급언어는 절차 지향 언어 , 객체 지향 언어로 나누어짐.

프로그래밍 언어로 소스 파일을 작성으로 시작.
소스 프로그램은 텍스프 파일이라서 텍스트 편집기로도 작성이 가능.
소스 프로그램을 기계어로 변환하는 컴파일 과정이 필요.
어셈블리어 파일 확장자 .asm C언어 .c C++은 .cpp 비주얼 베이직은 .vb 자바는 .java이며 자바프로그램의 경우 컴파일된 파일의 확장자는 .class 임.
가전제품의 소프트웨어 작성에 적합한 프로그래밍 언어를 개발.
기존 언어로 작성된 프로그램은 컴퓨터 플랫폼 간에 호환성이 없어 프로그램을 재작성해야 하는 단점이 있었음.
이에 선마이크로시스템즈는 플랫폼 독립적이며 메모리 사용량이 적은 언어를 개발하며 처음에는 이름을 오크 라고 지음 그러나 상표가 등록이 이미 되어 있어서 95년도에 자바라는 이름으로 발표하였으며 2009년에 데이터베이스로 유명한 오라클에서 인수함.
자바 가상 기계만 있으면 어떤 컴퓨터에서든 동일하게 실행됨. 이를 WORA라고 부름.
자바는 플랫폼 독립적 특징을 보여줌. 그리고 한 번 작성된 자바 프로그램은 수정 없이 실행 가능.
JDK 는 자바 개발자를 위한 상업용 소프트웨어로, 자바 컴파일러 등의 개발 도구와 JRE로 구성됨.
JRE는 자바 API와 자바 가상 기계를 포함함.
bin 디렉터리에 들어 있는 주요한 개발 소프트웨어
2017년에 자바 9가 새로나왔는데 자바 플랫폼에 큰 변화가 이루어졌는데 바로 모듈화.
Java9 개발자들이 호출하는 Java SE의 모든 클래스들을 모듈들로 재설계하고 재정리함. JDK를 설치하면 jmods 디렉터리 내에 담긴 모듈을 볼 수 있음.
모듈화의 대표적인 목적 은 세밀한 모듈화 그리고 필요 없는 모듈 배제하여 작은 크기로 배포할 수 있도록 함.
클래스 이름과 자바 소스 파일 이름이 같아야 함. 파일 확장자는 .java 임