1. 자바 수업 소개
수업 목적: 컴퓨터 프로그래밍 언어는 무엇인지를 자바를 통해 살펴보는 것이 목표이다.
컴퓨터 프로그래밍 언어가 왜 이렇게 주목받는지를 안다면 수업의 성공이다.
제임스 고슬링에 의해서 한번 작성하면 어디든지 실행된다는 슬로건으로 나타난 언어가 자바이다.
자바는 어디서든 실행될 수 있다.
언어의 순위를 매기는 tiob에 따르면 자바는 가장 인기 있는 언어이다.
자바가 중요한 언어라는 것은 분명하다.
자바는 기업용 시장에서 광범위하게 사용되고 현시점에서 모바일 시장에서도 사용 가능하다.
좋은 코드를 알아서 자기가 짠 코드를 긍정하지 못하는 경우를 많이 보았다.
이런 인식 속에서 만들어진 수업이 자바이다.
자바는 어떤 개념을 감출까를 고민하였다. 그것이 있어야 일을 할 수 있는 것은 넣고
불편한 것은 빼고, 필수적인 것은 알려줘야 하지만 불편한 것은 알아내야 한다.
개념적으로 경량화된 수업을 만들기 위해 노력했다.
초급자는 문제 해결을 잘하지 못하지만 도움이 되는 도구를 모른다.
중급자는 문제 해결을 잘 하지만 많은 도구를 가지고 있다.
스스로 자립하기 위해서는 자립을 위한 문제해결 도구들을 충분히 갖추고 있어야 한다.
그런 도구를 알려주기 위한 수업이다.
거대 IT 프로젝트 안드로이드 앱을 만드는 기본기가 갖춰지게 될 것이다.
선배들의 고민을 알아들을 수 있는 눈과 귀를 가지게 될 것이다.
2. 자바 애플리케이션 실행
소프트웨어를 구성하는 양대 개념은
원인을 나타내는 표현 중 하나인 소스
부호 기호라는 표현인 코드
마음대로 저런 결과가 아닌 약속이라는 언어라는 표현을 사용한다.
소스, 코드, 랭귀지는 같은 대상을 관점에 따라 다르게 사용하는 표현이다.
그렇게 만들어진 결과가
애플리케이션, 프로그램 이것도 관점 취향에 따라 다르게 표현하는 것이다.
원인인 소스, 코드 랭귀지
결과인 애플리케이션, 프로그램이 있다.
우리는 프로그래밍 언어의 문법에 맞게 시키고 싶은 일을 시키는 것이 하고자 하는 일이라는 것을 기억하자.
이 구도를 다른 관점에서 보면 우리는 컴퓨터가 있어야 한다.
여러분이 컴퓨터에 자바를 깔았다. 여러 가지 프로그램이 깔리는데 그중 핵심은 자바 버츄얼 머신이다.
그리고 여러분은 자기가 하고자 하는 일을 담은 확장자가 자바인 파일을 장성한다.
자바라는 컴퓨터 언어에 문법에 맞는 소스코드이다.
기계는 소스코드를 직접 이해할 수 없기 때문에 전환하는 작업을 해야 하는데,
그것이 컴파일이다.
저장을 누르면 클래스 파일이 만들어지는데, 그것이 자바 애플리케이션이다.
그리고 런 버튼을 클릭하면 이클립스가 자바 버츄얼 머신에게 시키는 것이다.
그것을 컴퓨터에 시켜서 프로그램은 동작되게 된다
5.a 데스크탑 앱 만들기
5.b 사물을 자바로 제어하기
컴퓨터의 역사는 3가지 요소로 발전했다.
빨라진다, 싸진다, 작아진다. 이런 요소들이 일정한 수준에 다다를 때 커다란 발전이 생겼다.
컴퓨터가 싸지다가 드디어 5000원 컴퓨터가 나오고 손톱만 해진다면 전구에 컴퓨터를 내장하는 것이 가능해질 것이다.
전구에 컴퓨터를 내장하면 자바를 깔고 자바로 만들어진 프로그램을 설치해서 실행하면 단순한 전기 제품인 전구는
프로그래밍적으로 제어가 되는 프로그래머블 한 스마트 전구가 된다. 이것은 미래가 아닌 현재이다.
이러한 흐름을 사물이 인터넷에 연결돼서 프로그래밍적으로 제어된다는 사물인터넷 IOT라고 부른다.
라즈베리파이는 50000원 정도이고 윈도우나 리눅스가 설치된 저렴하고 작은 컴퓨터이다.
이것보다 싸고 작은 장치도 있지만 이것은 교육용이다.
이 장치에는 GPIO라는 핀이 있고, 자바를 이용해서 라즈베리파이에게 몇 번 핀에 전기를 흐르게 해라고 명령할 수 있습니다.
이것이 가능해지면 원하는 시간에 물을 주고 지구 반대편에서 우리 집의 불을 킬 수 있게 된다.
5.c 안드로이드 애플리케이션 만들기
안드로이드 디벨롭먼트 다큐먼테이션이라고 검색하면 안드로이드를 어떻게 개발할 수 있는지를 알 수 있는 문서를 찾을 수 있다.
내 첫 번째 앱을 만들기 위한 수업이 있는데, 문서를 보고 해 보면 되겠지만, 자바를 공부하고 해 보세요.
안드로이드 스튜디오는 안드로이드를 개발할 때 필요한 도구를 모아둔 무료 개발 도구이다.
안드로이드 스튜디오를 다운로드하여서 설치하고 실행하면
만들고자 하는 앱에 따라서 기본적인 코드를 제공해주는 화면이다.
거기에 마이 자바 월드라는 앱의 이름을 정하고 어떤 도구로 개발할지를 정하면 기본 프로젝트가 완성된다
안드로이드 앱을 개발해서 실행하면 자바에 들어있는 것 중에, 밑에 있는 메인 액티비티라 하는 자바 파일을 실행하기로 약속되어 있다.
여기 내용을 보면 자바의 문법이다. 이렇게 자바를 통해서 안드로이드 앱을 개발할 수 있다.
6. 데이터와 연산
자바를 이용하는데 필요한 데이터에 대해 말해보자.
데이터만이 중요한 것이 아니라 데이터를 가지고 무언가를 하고 싶은 것이다.
컴퓨터가 어떤 데이터를 다룰 수 있는지 봐야 한다.
그중에서 가장 많이 사용하고 익숙한 데이터는 이런 것을 이야기할 수 있다.
숫자/문자/영상/소리 등등
이렇게 다양한 타입들이 있고 이런 타입들을 제어하는 것이 컴퓨터 공학이 하는 일이고
자바로 할 수 있는 일이다. 컴퓨터의 데이터를 구분하는 이유는 각각의 데이터마다 데이터의 특성에 맞는 처리방식이 존재한다.
숫자면 +-/* 부터 미적분까지 다양한 수학적 처리를 컴퓨터는 해 준다.
문자는 어떤 문자의 숫자가 몇 개냐 어떤 문자를 없애건 검색한다던지 이런 작업을 위해서는 데이터의 형식들을 잘 정리할 필요가 있다.
자바에서는 데이터를 어떻게 정리하고 각각의 데이터마다 어떤 연산의 방법이 존재하는지 살펴보는 것을 시작하겠다.
자바의 숫자 문자를 코드로 표현하겠다.
public class Datatype{
public static void main (String[] args) {
System.out.println(6);
System.out.println("six");
System.out.println("6");
System.out.println(6+6);
System.out.println("6"+"6");
System.out.println("1111".length());
}
}
프로그래밍은 데이터의 타입이 있고, 데이터의 타입별로 어울리는 연산 방법이 있고,
컴퓨터를 다루는 방법의 스킬을 쌓아가는 것은 두 가지의 중요한 흐름을 가진다
이 시스템은 어떤 데이터 타입이 있는지? 데이터 타입별 어떤 연산 방법이 있는지
그리고 이것으로 인해 할 수 있는 일이 증가하게 된다.
자바는 많은 기능을 가지고 있는데, 수학과 관련된 아주 유명하고 자주 사용되는 캐비넷이
MATH이다.
public class Number {
public static void main(String[] args) {
System.out.println(6 + 2); // 8
System.out.println(6 - 2); // 4
System.out.println(6 * 2); // 12
System.out.println(6 / 2); // 3
System.out.println(Math.PI); // 3.141592653589793
System.out.println(Math.floor(Math.PI)); // floor는 소숫점을 잘라버리는 문법
System.out.println(Math.ceil(Math.PI)); //ceil은 올림하는 문법
}
}
6.4 문자열의 표현
public class StringApp {
public static void main(String[] args) {
// Character VS String
System.out.println("Hello World"); // String
System.out.println('H'); // Character
System.out.println("H");
System.out.println("Hello "
+ "World");
// new line
System.out.println("Hello \nWorld");
// escape
System.out.println("Hello \"World\"");// Hello "World"
System.out.println("Hello World".length()); // 11
System.out.println("Hello, [[[name]]] ... bye. ".replace("[[[name]]]", "duru"));
}
}