JAVA의 이해를 돕기 위한 컴퓨터 & 프로그래밍의 이해
컴퓨터와 S/W
컴퓨터의 형태
PC, Tablet(내 손 안의 컴퓨터), SmartPhone, One-Chip com(장난감)
소프트웨어
- 컴퓨터 하드웨어를 작동시켜 쇼핑, 신문, 음악, 게임 등을 할수 있게 하는 프로그램
- 컴퓨터의 중앙 처리장치 (CPU)가 이해할 수 있는 일련의 명령들과 데이터로 구성
- 이러한 명령들을 CPU에서 순차적으로 해석하여 실행함으로써 요구된 기능을 수행
- CD/DVD와 같은 저장매체로 제공되며, 인터넷에서 직접 다운받을수 있는 형태로 제공되는 추세
- 태블릿,스마트폰에서 작동하는 소프트웨어를 앱 이라고 부름
프로그래밍 언어
프로그램을 작성하기 위한 언어로 저급언어인 기계어, 어셈블리어와 고급언어인 절차지향언어, 객체지향언어 등이 있다.
저급 언어
기계어(Machine Language)
이진수(0과 1로 이루어진 Binary Code)로만 이루어진 언어 - 이진수를 통해 CPU의 연산&이해
사람이 이해하기 어려운 언어 - 저급언어
어셈블리어 (Assembly Language)
기계어로는 사람이 직접 프로그램을 만들기 어려워 ADD,SUB,MOVE 등과 같은 가급적 표현하기 쉬운 상징적 단어들로 이루어진 니모닉 기호로 일대일 대응시킨 언어
사람이 다루기 힘든 저급언어
고급 언어
사람이 이해하고 표현하기 쉬운 언어로, 복잡한 알고리즘이나 프로그램 구조, 자료 구조를 효율적으로 표현할 수 있는 Pascal, Basic, COBOL, C/C++, C#, Java, Python 등이 있다.
절차지향 언어
C언어, Pascal, COBOL 등이 해당
객체지향 언어
C++, C#, JAVA, Python 등이 해당
흔히 사용되는 대표적인 프로그래밍 고급 언어로는 C/C++ , JAVA , C# 이 있다.
이들의 탄생 순서는 C → C++ → JAVA → C# 이다.
C언어는 오픈언어이며, C++과 C#은 MS사에서 만든 언어, JAVA는 구 썬마이크로시스템사에서 개발한 언어이다.
여담으로 C언어 기반의 C++을 잡기위해 JAVA가 나왔으며 JAVA를 잡기 위해 다시 C#이 나왔다는 설이 있다.
C, C++은 소스레벨의 코딩이 가능하고, Java, C#는 클래스는 동적으로 움직이며 클래스 기반의 언어(?)라고 할 수 있다.
C++
C++ 언어는 C언어를 발전시킨 언어로 C언어를 부분집합으로 가지고 있어 C언어와 문법, 사용법이 모두 같으나 class를 이용하여 객체를 표현할 수 있어 최초의 객체지향언어 라고 부른다.
객체지향 및 일반화 프로그래밍과 같은 멀티 패러다임을 지원하는 프로그래밍 언어로 1979년 C with Classes라는 이름의 언어로 사용되다가 1983년 C++이라는 이름으로 굳히게 된다.
C++은 프로그래머의 자유도가 높은 언어로써, 객체 지향이나 절차 지향 등의 설계에 제한을 두지 않는다. 다만, 객체지향과 일반화 프로그래밍을 사실상 거의 주된 패턴으로 사용하기 때문에 (프로그래머 입장에서는) 객체지향 언어에 가깝다.
JAVA
1995년 썬 마이크로 시스템즈의 제임스고슬링이 개발한 객체 지향 프로그래밍 언어로 2010년 오라클이 썬 마이크로시스템즈를 인수하면서 JAVA의 저작권을 소유하고 있다.
플랫폼에 독립적 (어느 운영체제에서나 실행이 가능) 이며 C/C++의 컴파일러와 달리 자바 컴파일러는 바이트코드인 클래스 파일(.class)를 생성하고, 이 파일의 바이트코드를 읽은 뒤 JVM(자바 가상 머신)에서 기계어로 바꾸어 실행하는 형태이다.
C#과 문법적 성향이 비슷하며 C++과는 다르게 아에 처음부터 객체지향으로 개발되었지만 원시타입은 객체로 취급하지 않는 Java는 완벽한 객체지향 언어라고 볼 수는 없다.
개발된 게임중에는 대표적으로 마인크래프트가 있다.
C#
C에서 발전된 객체지향 언어 C++을 한단계 더 발전시킨 언어로 MS사에서 .NET 프레임워크 기반으로 개발된 언어이다.
닷넷 프레임워크는 자바의 자바 가상머신과 같은 역할을 해준다.
여담으로 JAVA에서 강한 영향을 받아 JAVA를 잡기 위해 나온 언어라는 말이 있다.
언어의 문법적인 특성이 JAVA와 유사하지만 MS라는 특정 플랫폼에 강하게 묶여있다는 인식이 널리 퍼져 있다.
웹 애플리케이션 개발용으로 ASP를 사용하며 이는 JAVA에서 사용하는 JSP에 대응된다.
컴파일
프로그래밍이란 고급언어를 이용하여 전용 개발 도구나 텍스트 편집기로 프로그램 소스(Source) 파일(혹은 소스프로그램) 을 작성하는것을 의미한다.
기계어는 컴퓨터가 바로 이해할 수 있지만, C나 자바와 같은 고급언어로 작성된 소스 프로그램은 컴퓨터가 이해할 수 없으므로, 소스 프로그램을 기계어로 변환하는 과정이 필요하며 이를 컴파일 이라고 한다.
소스 파일 확장자 : .asm(어셈블리어) , .c(C언어) , .cpp(C++) , .vb(비주얼베이직) , .java(자바)
컴파일러
소스 프로그램을 기계어로 변환해주는 소프트웨어이며 각 언어마다 고유한 컴파일러가 있기 때문에 예를들어 C언어의 컴파일러로 JAVA 소스 프로그램을 컴파일할 수는 없다.
확장자와 소스프로그램의 언어가 일치하지 않으면 해당 언어의 컴파일러는 제대로 컴파일 하지 못한다.
자바의 소스파일 .java 확장자는 컴파일 된 후 .class 확장자로 컴파일 된 파일이 생성된다.