본문 바로가기
카테고리 없음

자바 프로그래밍 기초

by 낭만 코딩 2024. 7. 20.

1.     프로그램이란?

2.     프로그램을 배워야 하는 이유

3.     자바란?

4.     자바의 실행 프로세스

5.     자바로 할 수 있는 일

6.     왜 자바인가? (자바를 배워야 하는 이유)

 

 

안녕하세요. 자바 첫번째 포스트입니다.

자바를 본격적으로 배우기 전에 프로그램이라는 용어와 자바가 무엇인지 알아보고, 왜 제가 처음 코딩을 배우는데, 자바를 먼저 포스트를 시작하게 되었는지 알아보겠습니다.

 

 

1. 프로그램이란

프로그램이라는 단어 많이 들어 보셨죠? 많이 듣고, 사용하는 단어지만 막상 컴퓨터 쪽에서는 어떤 의미로 쓰이는지 애매할 수 있는데요. 교육 프로그램, 방송 프로그램 등 어떤 순서나 절차에 의해 나열된 항목이라는 의미로 다양한 곳에 쓰이고 있습니다.

위키피디아에서 프로그램이라는 단어를 검색해보면 지시 사항들이 나열된 순서를 프로그램이라고 부른다고 되어 있습니다. 여기에 컴퓨터 프로그램이라는 단어로 다시 검색해보면 컴퓨터에서 실행될 때 특정 작업(specific task)을 수행하는 일련의 명령어들의 모음(집합)” 이라고 되어 있습니다.

얼핏 보면 다른 의미인 것처럼 보이지만, 프로그램은 어떤 순서에 의해 나열된 항목이며, 이 항목(모음, 집합)들을 컴퓨터가 알아들을 수 있도록 컴퓨터에서 사용되는 언어(Language)를 사용해서 작성하는 것을 통틀어 컴퓨터 프로그램이라고 부릅니다. 좀 더 넓은 범위의 의미도 있지만, 우리는 보통 컴퓨터에서 실행되도록 만든 것들을 전부 프로그램이라고 부르고 있습니다.

프로그래밍 언어(Language)란 인간과 컴퓨터가 서로 대화(의사소통) 할 수 있는 도구로서 여러분들이 컴퓨터에게 업무를 지시하기 위해 반드시 익혀야 할 도구입니다 프로그래밍 언어의 종류로는 자바, C, C++, Python 등 다양한 프로그래밍 언어가 존재합니다.

 

일반적으로 언어(Language)라는 것은 배우고 익히는데 아주 많은 시간이 필요합니다. 우리가 영어를 10년 이상 배웠음에도 여전히 어렵고, 제대로 읽거나 말하지 못하는 사람이 부지기수임을 보면, 모국어가 아닌 다른 언어를 배우는 것이 정말 어렵다는 것을 잘 알고 있을 것입니다. 그런데, 영어강사나 이미 영어를 잘 하는 사람들은 모두 영어 공부는 어렵지 않다고 합니다. 왜 그럴까요? 답은 위 사람들은 모두 영어가 재미있는 사람들입니다. 영어로 된 책을 읽고, 영어 뉴스를 보며, 자막 없는 영화도 보고, 재미와 흥미를 느끼며 배웠을 것입니다. 억지로 강제로 배우면 절대 재미가 있을 수 없습니다. 재미/흥미가 없으면 하기 싫어지고, 안 하다 보면 또 까먹고 나중에 다시 해볼까? 하며 계속 쳇바퀴 돌듯이 반복되는 문제들... 아마 영어도 그렇고 코딩도 비슷한 경험을 하신 분들이 많을 것입니다.

 

처음엔 어색하고 낯설어 어렵게 느껴지지만 흥미가 생길 때까지 조금만 참고하다 보면 반드시 재밌어지고, 더 많은 것을 알고 싶어지는 때가 오게 됩니다. 사람마다 개인차가 있어 흥미가 생기기까지의 시간이 다를 수는 있지만, 언젠가는 잘 할 수 있게 된다는 것을 꼭 잊지 마세요. 언어학을 전공해야만 해당 언어를 구사할 수 있는 것이 아닙니다. 기초적인 문법 숙지 후 반복하면 해당 언어를 어느 정도는 할 수 있게 됩니다. 이 정도면 충분합니다.”

 

많은 사람들이 오해하는 것이 하나 있는데, “저는 문과 출신이라 코딩을 잘 못하나 봐요 라는 말입니다. (흔히 비전공자라는 표현을 씁니다.) 그럼 이과 출신은 영어를 못하나요? 그렇지 않습니다. 단지, 내가 남들 보다 실력이 부족하다면, 늦게 시작했거나, 연습을 덜 했을 뿐입니다.

 

 

2. 프로그램을 배워야 하는 이유

* 코딩만이 프로그래밍이 아닙니다.

* 주의 모든 처리과정 자체가 프로그램입니다.

* 누구나 프로그래밍 적인 사고를 하고 있습니다.

 

여러분이 전세집을 얻는다고 가정해봅시다.

전세집을 단한번도 얻어보지 않은 사람에게 이 일을 로 시켜야 하는데요. 이 전체 처리 과정을 여러분이 먼저 직접 글로 한번 써 보세요.

아마 생각보다 쉽지 않을 것입니다. 대부분의 분들이 공통적으로 머리속에는 대충 있는데, 글로는 잘 표현이 안되네요 라고 말씀들을 많이 하십니다. 그리고 이게 정상입니다. 여러분들이 평소에 무심코 하는 행동들, 일상들이 사실 여러분의 머리속에 코딩 되어 있는 것이죠. 다시 전세집으로 돌아가서, 사람마다 다 다르겠지만 보통은 인터넷으로 원하는 지역의 전세매물을 확인하고, 부동산에 연락해서 날짜를 잡아 집을 보러 갈 것입니다. 집을 몇 번이나 봐야 할까요? 또 집을 계약하기로 결정하는데 필요한 요소는 어떤 것이 있을까요? 방이 두개, 평수, 역에서의 거리... 어떤 사람은 가격이 더 중요할 수도 있겠네요. 여러분이 전세계약을 한다면 계약의 기준이 무엇일까요? 당연히 사람마다 우선순위가 다 다르겠죠? 이 과정을 컴퓨터한테 시킨다고 생각해보세요. 컴퓨터가 알아들을 수 있는 언어로 순서대로, 정확하게 설명해야겠죠? 이것이 바로 컴퓨터 프로그램입니다.

 

그럼, 프로그램을 왜 만들까요? 사람이 하기 어려운 작업이나, 반복적이고 지루한 작업을 자동으로 처리하기 위해서 입니다. 아인슈타인이 말씀하셨던 유명한 명언이 있죠.

 

컴퓨터는 놀랍게 빠르고, 정확하지만, 멍청하다. 하지만 사람은 놀랍게 느리고, 부정확하지만, 똑똑하다. 이 둘이 힘을 합치면 상상할 수 없는 힘을 가지게 될 것이다.

 

미래에는 사람이 사용하는 말만으로도 컴퓨터한테 일을 시킬 수 있는 시대가 분명히 오겠죠, 하지만 이제 이 프로그래밍 능력은 여러분이 앞으로 반드시 갖추어야 할 능력이 될 것입니다.

 

 

3. 자바란?

자바는 1991년 썬마이크로시스템즈 (Sun MicroSystems)라는 회사에서 제임스 고슬링이라는 분이 만든 프로그래밍 언어입니다. 그 당시 C C++라는 프로그램으로 개발할 때 개발자들이 너무 어렵거나 불편한 작업들을 좀 더 편하게 만들고, 객체지향적인 개념을 도입하여 만든 언어로, 90년대 중반 이후부터 현재까지도 30년이 넘었지만 여전히 꾸준한 인기를 끌고 있습니다.

자바 언어의 가장 큰 특징은 여러분들이 여러분 컴퓨터에 자바로 개발할 개발환경을 구축할 때 단 1원도 필요하지 않습니다. 완전 무료라는 이야기입니다. 물론 컴퓨터 자체를 구매하는 비용이나 개발 편의를 위해 비용이 들어가는 경우는 있겠지만, 기본적으로 컴퓨터, 노트북을 갖고 계시면 완전 무료로 개발 환경을 구축하실 수 있습니다.

앞에서 말씀드렸던 내용이지만, 프로그래밍 언어는 컴퓨터와 대화하기 위한 도구입니다. , 자바라는 언어를 사용해서 여러분과 컴퓨터가 대화하면서 여러분이 원하는 프로그램을 만들 수 있게 됩니다.

그럼 왜 그 많고 많은 프로그래밍들 중에 하필 이렇게 오래된 자바를 배울까요? 이 부분은 마지막에서 다시 다뤄보도록 하겠습니다.

 

 

4. 자바의 실행 프로세스

자바 실행 프로세스

 

아직 이 그림이 와닿지 않으실 수 있습니다. 쉽게 말씀드리면 여러분이 타이핑해서 코딩하는 파일은 확장자가 .java인 파일입니다. 이 파일을 JDK라는 어떤 프로그램이 컴파일이라는 작업을 통해 확장자가 .class 파일을 만들어 냅니다. 이 클래스파일이 실제 실행되는 파일이 되는 것입니다.

포토샵으로 비유하자면, 여러분이 포토샵 프로그램에서 작업한 파일은 .psd라는 파일이죠? 이 파일은 포토샵이 없으면 일반적으로 볼 수 없습니다. 웹상에 이미지를 올리거나 친구에게 메신저로 전달하려면 포토샵에서 이 .psd파일을 .jpg .gif 파일 등으로 변환해서 올리겠죠?  .psd 파일이 바로 .java 파일이 되고, .jpg 파일이 .class 파일이 됩니다.

그리고 실행해주는 프로그램도 따로 있는데 JVM(Java Virtual Machine)이라는 프로그램입니다. 뭐가 많이 복잡해 보이나요? 걱정하실 필요 없습니다. 여러분들은 이클립스 인텔리제이 같은 개발도구를 사용하면 코딩  컴파일  실행까지 이 개발도구들이 전부 알아서 해줍니다. 여러분들은 코딩에만 집중하면 된다는 이야기죠.

 

 

5. 자바로 할 수 있는 일

여러분은 코딩을 왜 배우고 싶으신가요?

노후대비? 취미? 무엇이든 상관없습니다. 여러분들이 코딩을 배워서 무엇을 하고 싶은지 먼저 생각해보세요. 예를 들면 일정관리 프로그램을 만들고 싶다. 쇼핑몰을 직접 만들어 보고 싶다. 앱을 만들고 싶다. ... 그래야 자바 기초문법 배운 이후에 방향을 정할 수 있고, 목표가 생겨야 더 의지도 생기게 됩니다. 그럼 우선 자바로 뭘 만들 수 있는지 알아볼까요?

인터넷 뱅킹

이 이미지는 여러분들이 흔히 보는 인터넷뱅킹 사이트입니다. 이런 웹사이트 뿐만 아니라, 회사에서 내부에서 업무적으로 사용하는 시스템이나, 쇼핑몰, 포털사이트, 지금 이 블로그도 웹 기반의 어플리케이션 입니다. 이런 웹 어플리케이션을 만들 수 있습니다.

MS ToDo

두번째는 앱이라고 부르죠? 모바일 어플리케이션입니다. 안드로이드 스마트폰은 자바 기반으로 되어 있고, 어플리케이션 역시 자바로 만들어서 여러분이 직접 만든 어플리케이션을 설치해서 사용할 수도 있고, 구글플레이에 올릴 수도 있습니다. 최근에는 코틀린이라는 프로그래밍 언어도 많이 사용되고 있지만, 근본은 자바였고, 아직 자바도 많이 사용되고 있습니다.

하둡 로고

세번째는 빅데이터 플랫폼입니다. 여러분 혹시 하둡이라는 단어 들어보셨나요? 빅데이터 플랫폼(시스템)에서 정말 많이 사용하는 유명한 단어인데요. 이 하둡이 자바로 만들어진 소프트웨어입니다. 하둡외에도 하둡과 연계하여 데이터를 수집, 저장, 처리, 분석 할 수 있는 소프트웨어들 역시 자바로 만들어진 소프트웨어가 많습니다.

 

자바를 한물간 언어라고 하는 사람들도 많습니다. 하지만 자바는 특정 분야에 국한되어 사용되지 않고, 아주 다양한 분야에 널리 사용되고 있는 프로그래밍 언어로써 자바 기초를 잘 다져 놓으면 차후 여러 분야로 개발 영역을 넓혀 갈 수 있으며, 지금까지도 마찬가지지만 앞으로도 발전 가능성이 아주 높은 프로그래밍 언어라고 할 수 있습니다.

 

 

6. 왜 자바인가? (자바를 배워야 하는 이유)

위에서 말씀드렸던, 왜 많고 많은 프로그래밍 언어 중에 하필 자바인가? 나온지도 오래됐고, 요즘 파이썬도 많이 쓴다던데, 파이썬이 더 배우기 쉽다던데, 자바는 어렵다던데...

, 여러분이 생각하시는 모든 이유들 다 맞습니다. 하지만, 여러분이 코딩을 배우려고 마음 먹은 이유. 나의 노후를 위해. 노후 수입을 위해서는 자바를 반드시 하셔야 합니다. 그렇다고 파이썬이나 다른 언어를 배우지 말라는 이야기는 아닙니다.

제가 개발 실무 15, 개발자 양성 강의 5년하면서 확실히 느낀점은 자바개발자는 항상 부족합니다. 파이썬은 자바개발자들도, C개발자들도 모두 할줄 아는 언어일 뿐, 파이썬 만으로는 메리트가 부족합니다. 잡코리아, 사람인 구인공고를 찾아보세요. 자바개발자가 압도적으로 많습니다. 저희 나라는 자바 공화국이라는 표현을 쓸정도로 많은 기업 시스템들이 자바를 사용하고 있습니다. 일반 개인홈페이지나, 기업홍보/이벤트 홈페이지를 제외한 기업용 시스템/프로젝트에서는 자바가 안쓰이는 곳이 없다고 해도 과언이 아닙니다.

여러분 모두가 개발자가 될 필요는 없습니다. 운전 할줄 안다고해서 카레이서가 되는것이 아닌것처럼, 여러분의 자리에서 또는 다른 회사에서, 그 어디에서도 자바 개발을 할줄 아는 사람이 되는 것은 다릅니다. 여러분 본인이 일하고 있는 분야에서도 분명 자바를 배워야 하는 이유를 충분히 찾을 수 있을 것입니다.

 

 

코딩 공부 방법

코딩은 공부한다는 표현보다는 연습한다라는 표현이 맞을것 같습니다.

코딩을 운전과 비유하자면, 여러분 처음 운전 배울 때, 도로에 차를 몰고 나갔을 때를 떠올려 보세요. 어떻게 하면 운전을 잘하게 되나요? 자동차 공학과를 가서 4년 동안 자동차 공학을 배워야 하나요? 아님 자동차의 모든 기능을 다 외워야 하나요? 전혀 그렇지 않습니다.

처음 배울 땐, 자동차의 기본 조작 방법, 시동거는 방법이나, 엑셀, 브레이크 조작 방법, 차선 변경, 주차 등 운전 전에 반드시 알아야할 내용을 먼저 공부하겠죠? 그 다음에는 여러분이 차를 몰고 도로로 직접 나가서 여러분이 가고 싶은데를 직접 몰고 가다보면 잘하게 됩니다.

결국 어떻게 해야 운전을 잘하게 되는지의 답은 많이 하면 된다입니다.

예전에 저의 직장 동료가 처음 운전면허를 따고 운전을 하는데, 저한테 이런 질문을 한적이 있습니다.

좌회전을 하려면 핸들을 몇도 정도 돌려야 하나요?”

운전하시는 분들은 어이가 없는 질문으로 들리실 수 있습니다. 여러분이 코딩을 처음 배우실때도 마찬가지입니다. 자동차의 모든 기능을 다 알필요 없고, 꼭 필요한 기능만 알고 나가면 되듯이, 프로그래밍 언어에서 꼭 필요한 기초 문법이나 사용법만 배우고, 직접 코딩해가면서 실력이 늘면됩니다. 중간에 필요한건 그때 그때 찾아보거나 물어보면 되구요.

하루 규칙을 정해보세요. 하루 1시간씩이라도 매일 연습하면 반드시 실력이 늘게 됩니다.