프로그래밍이란?
컴퓨터 프로그램 만드는 일을 프로그래밍이라 하고, 프로그램 만드는 사람을 프로그래머라고 한다.
프로그래밍을 한다는 것은 컴퓨터가 일하도록 컴퓨터 언어로 명령을 만들고 컴퓨터가 그 명령을 실행하게 하는 것을 말한다.
그러면 '프로그램'이란 무엇일까?
한마디로 프로그램은 컴퓨터에 일을 시키는 명령의 집합이라고 할 수 있다.
예를 들어 컴퓨터에 1부터 100까지 더하라고 명령할 때, 우리말로 '1부터 100까지 더하라'라고 쓸 수 없다.
인공지능 로봇이 아닌 한 컴퓨터는 그 명령을 알아들을 수 없으니까.
그래서 '프로그래밍 언어'를 사용하여 명령 집합을 만드는 것이다.
그리고 이렇게 만든 프로그램이 프로그래밍 언어 문법에 잘 맞는지 확인하고, 컴퓨터가 이해할 수 있는 언어로 번역해야 한다.
이 작업이 컴파일이며 컴파일 작업을 하는 프로그램을 컴파일러라고 한다.
결국 우리가 말하는 프로그램이란 프로그램에 들어 있는 명령집합과 컴파일된 결과물까지 포함한다고 생각하면 된다.
자바는 프로그래밍 언어이고, 자바 개발 환경을 설치하면 컴파일러도 함께 설치된다.
자바를 쓰면 무엇이 좋을까?
자바는 1991년 제임스 고슬링을 비롯한 선 마이크로시스템즈 연구원들이 처음 개발하였다.
그 당시에 가장 많이 사용하던 프로그래밍 언어는 C와 C++였는데, 가전제품이나 휴대용 장치 등에 사용하는 소프트웨어를 만들기 위해 독립적으로 작동하는 더 안정된 프로그래밍 언어가 필요했다.
이러한 이유로 개발된 언어가 바로 자바이다.
특성 1. 플랫폼에 영향을 받지 않으므로 다양한 환경에서 사용할 수 있다.
자바는 '한 번 작성하면, 어디서든 돌아간다'는 슬로건이 있다.
플랫폼에 종속되지 않는 프로그램을 개발하여 여러 플랫폼에서 실행할 수 있다.
여러 플랫폼에서 실행할 수 있다는 것이 무슨 뜻이냐면,
예를 들어 윈도우 운영체제에서 C언어로 개발한 프로그램이 있을 때, 프로그램 이름을 Test로 가정하였다.
이 프로그램을 컴파일하면 Test.exe가 만들어진다. Test.exe는 윈도우에서 실행되는 '실행 파일'이라고 한다. 이 실행 파일은 윈도우 운영체제에 맞게 만들어졌기 때문에 리눅스 운영체제에서는 실행할 수 없다.
만약 이 Test.exe 파일을 리눅스 운영체제에서 실행하려면, 리눅스 환경에서 다시 컴파일해서 리눅스 운영체제에 맞는 실행 파일을 새로 만들어야 한다.
하지만 자바에서 Example이라는 이름의 프로그램을 만들고 컴파일하면 Example.class 파일이 생성된다.
이 파일을 바이트 코드라고 하는데 완벽한 실행 파일이 아니다.
다시 말하면 운영체제에 맞는 완벽한 기계어가 아닌 중간 기계어이다.
이 바이트 코드를 실행하려면 운영체제에 맞는 자바 가상 머신이 필요하다.
운영체제에서 직접 실행하는 게 아니라 가상 머신에서 먼저 실행하고, 이 가상 머신이 운영체제에 맞는 완벽한 실행 파일로 바꿔 준다.
즉. class 파일을 만들어 두면 운영체제에 맞는 가상 머신을 이용하여 어느 환경에서나 실행할 수 있다.
이러한 특성 때문에 처음 자바가 발표되었을 때 프로그램 실행 속도가 느리다는 평이 많았고 실제로 느리기도 했다.
하지만 하드웨어가 발전하면서 자바 컴파일러도 JIT(Just In Time) 컴파일 방식으로 개선되었고 이제 자바 프로그램의 실행 속도는 아무 문제가 없어졌다.
특성 2. 객체 지향 언어이기 때문에 유지보수가 쉽고 확장성이 좋다.
자바는 객체 지향 언어이다.
자바가 나오기 전에 대표적인 객체 지향 언어는 C++였다.
기술이 발전하면서 가전제품 내부에 사용할 수 있는 안정된 프로그램을 개발하는 데 기존의 C++가 적합하지 않았고, 여러 기계 환경에서 독립적으로 작동하는 안정된 프로그램을 개발하기 위해 자바를 만들었다.
객체 지향 프로그래밍이란 일의 순서대로 프로그래밍하는 것이 아닌 여러 객체의 협력을 통해 프로그램을 구현하는 것이다.
어떤 회원이 쇼핑몰 사이트에 접속하여 상품을 주문하고 상품이 집까지 배송되는 과정이라고 할 때, 회원, 상품, 주문, 배송 등이 객체이다.
즉 회원과 상품과 주문과 배송이라는 객체를 기반으로 각 객체의 상호 관계를 이용하여 프로그래밍하는 것이다.
객체 지향 언어로 프로그래밍하면 공통으로 사용하는 부분을 수정하지 않고도 프로그램에 새 기능을 쉽게 추가할 수 있다.
따라서 객체 지향 언어로 프로그램을 잘 설계하면 유지보수가 쉽고 확장성이 좋다.
특성 3. 프로그램이 안정적이다.
자바는 비교적 최근에 출시된 언어로서 기존 언어가 가지는 모호성과 불안정한 부분을 과감히 없애고 개선했다.
자바는 C나 C++에서 제공하는 문법인 포인터를 사용하지 않아 메모리를 직접 제어할 수 없다.
하지만 프로그램에서 메모리를 직접 제어하면 오류가 발생할 수 있는데, 이러한 위험성이 없으므로 훨씬 안정된 코드를 만들 수 있다.
또한 동적 메모리 수거를 프로그래머가 하지 않고 가비지 컬렉터를 이용하므로 메모리를 효율적으로 관리할 수 있다.
특성 4. 풍부한 기능을 제공하는 오픈 소스이다.
기존의 다른 언어에서는 특정 기능을 대부분 개발자가 직접 개발하여 사용했다.
자바에는 기본 기능을 제공하는 클래스뿐 아니라 자료 구조, 네트워크, 입출력, 예외 처리 등에 최적화된 알고리즘 라이브러리를 제공하는 자바 개발 키트가 있다.
그래서 프로그램을 빠르게 완성할 수 있다.
즉 자바는 오픈 소스이고 자바를 활용한 오픈 소스가 이미 많이 개발되어 있으므로 이들 오픈 소스를 연동하여 더 풍부한 기능을 빠르게 구현할 수 있다는 장점이 있다.
자바로 어떤 프로그램을 만들 수 있는지?
1. 웹 서버
웹 사이트를 운영하려면 반드시 서버가 필요하다.
사용자가 웹 사이트에 접속해서 뉴스나 메일 서비스를 요청하면 서버에 그 요청이 전달되고 요청 결과를 응답으로 받는다.
이때 사용자에게 요청받아 응답을 주는 프로그램이 서버이다.
검색 사이트, 쇼핑몰, 금융 사이트 등 우리가 흔히 이용하는 사이트가 자바로 개발한 웹 서버 프로그램으로 운영되고 있다.
2. 안드로이드 앱
현재 우리가 사용하는 스마트폰은 크게 안드로이드폰과 아이폰이 있다.
이 중 안드로이드폰에서 사용하는 앱을 만들 수 있는 프로그래밍 언어 중 하나가 자바이다.
3. 게임
초등학생들도 즐겨하는 마인크래프트라는 게임도 자바로 구현되었다.
게임을 만들 때는 C++과 C를 주로 사용하지만 마인크래프트처럼 자바도 게임을 구현하는 데 종종 사용된다.
'언어(Language) > JAVA' 카테고리의 다른 글
[JAVA] 자바 특정 위치의 문자 찾기(indexOf) (0) | 2024.04.24 |
---|
댓글