박봉달의 개발생활

[부스트코스#2] 소스코드란? 자바(Java)의 실행 원리와 IoT 활용 본문

Qualification/네이버 부스트코스 서포터즈 3기

[부스트코스#2] 소스코드란? 자바(Java)의 실행 원리와 IoT 활용

박봉달 2021. 1. 9. 23:20
728x90

안녕하세요, 박봉달입니다!

저번 시간에 "Hello World!" 를 출력해보았습니다!

하지만 자바를 유용하게 활용하기 위해선, 본인이 자바를 어떤식으로 이해했고,

어떤 과정을 통해 작동하는지 이해하여 출력물이 어떤 과정을 통해 출력되었는지 이해하는 과정이 필요합니다.

 

부스트코스 : 쉽게 배우는 자바 1, 자바의 동작 원리에 대해 알아보도록 하겠습니다!


1. 자바와 소스 코드

public class HelloWorldApp {
    public static void main(String args[]) {
        System.out.println("Hello World!");
    }
}

저번시간 위의 소스 코드를 통해 "Hello World!"를 출력해보았습니다.

여기서 소스는 소프트웨어가 구현되는 원인이라는 의미에서 "소스(Source)"로 불리기도 하며,

기호, 부호라는 의미에서 "코드(Code)"로도 불립니다.

 

이 소스 또는 코드를 한 개 또는 여러 개를 모아 구현하여 만든 것이 바로 프로그램 또는 애플리케이션이 되는 것입니다!

 

출처 : 부스트코스

 

자바의 구동 순서를 쉽게 말로 풀어 설명해보자면 아래와 같습니다 :)

1. 여러분은 하고자하는 것을 담은 소스코드를 자바 문법에 맞게 작성을 합니다

2. 그 소스코드는 기계가 직접 이해하기 어렵기 때문에 기계가 이해할 수 있도록 전환하는 컴파일을 합니다

3. 이클립스로 작성한 소스코드를 RUN(동작)하면, 이클립스가 자바 버추얼 머신(가상머신)에게 동작하라고 명령하게 됩니다

4. 자바 버추얼 머신이 클래스(class)파일을 불러들여 소스코드가 적혀있는대로 컴퓨터에서 동작하게 됩니다.

 

쉽게 말하면 자바는 개발자(프로그래머)가 하고자 하는 것을

컴퓨터가 이해하기 쉬운 언어로 작성할 수 있게 만들어주는 언어입니다.

자바는 데스크톱, IoT, 안드로이드 앱을 만드는데 유용하게 사용됩니다.

저는 IoT에 관심이 많기 때문에 사물을 자바로 제어하는 방법을 간단히 소개하도록 하겠습니다


2. IoT, 사물을 자바로 제어하기

우선 IoT에 대해서 알아보도록 하겠습니다.

컴퓨터는 시대마다 속도가 빨라지고, 크기가 작아지고, 가격이 낮아지고 있습니다.

그리고 그 작아진 컴퓨터를 여러 사물에 이식하여 핸드폰 만으로도 사물을 제어할 수 있는 시대가 왔습니다.

대표적인 예로는 제가 직접 구입하여 사용하고 있는 필립스 휴 4.0 전구가 있겠는데요,

필립스 앱을 통하여 핸드폰 만으로 전구의 온오프, 색온도 등을 조절 가능합니다.

https://things-voyager.tistory.com/4

 

[스마트홈:#2] 필립스 휴 4세대 BT 활용법

오늘 기다리고 기다리던 택배가 도착했다! 이 택배를 위해서 이케아 스탠드를 샀다고 해도 과언이 아닌, 필립스 휴 4세대!! 화이트 앰비언스로 화이트보다 넓은 색역폭! 얼른 까서 장착 해야한다

things-voyager.tistory.com

 

 

우리는 스마트전구와 같이 사물에 작은 컴퓨터를 이식하여 통신 가능한 상태로 만드는 것을

바로 IoT (Internet of Things) 라고 부르게 됩니다.

그리고 자바로 이러한 제품들을 조절 가능하도록 프로그래밍 할 수 있습니다.

바로 라즈베리파이라는 컴퓨터를 사용하여 말이죠.

 

라즈베리파이의 구성요소 중 GPIO (General Purpose Input Output)이 있는데,

각각의 핀들은 프로그램으로 전류의 흐름을 제어할 수 있습니다.

위의 강의에서는 이러한 GPIO 핀을 사용하여 Hello world 중

HELL 부분을 전구를 연결하여 모스부호를 나타내는 방법을 보여주고 있습니다.

그 코드는 아래와 같습니다 (출처 : 부스트코스)

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;

public class HelloWorldRaspberryPi {

	public static void main(String[] args) throws InterruptedException {

		final GpioController gpio = GpioFactory.getInstance();
		final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "PinLED", PinState.LOW);
		final int SHORT_INTERVAL = 200;
		final int LONG_INTERVAL = SHORT_INTERVAL * 3;
		final int LETTER_INTERVAL = SHORT_INTERVAL * 7;

		while (true) {
			// H
			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(SHORT_INTERVAL);
			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(SHORT_INTERVAL);
			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(SHORT_INTERVAL);
			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(LETTER_INTERVAL);

			// e
			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(LETTER_INTERVAL);

			// l
			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(SHORT_INTERVAL);

			pin.high();
			Thread.sleep(LONG_INTERVAL);
			pin.low();
			Thread.sleep(SHORT_INTERVAL);

			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(SHORT_INTERVAL);
			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(LONG_INTERVAL);

			// l
			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(SHORT_INTERVAL);

			pin.high();
			Thread.sleep(LONG_INTERVAL);
			pin.low();
			Thread.sleep(SHORT_INTERVAL);

			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(SHORT_INTERVAL);
			pin.high();
			Thread.sleep(SHORT_INTERVAL);
			pin.low();
			Thread.sleep(LONG_INTERVAL);
		}
	}
}

 


<결론>

자 이제 본격적으로 Java의 세계에 발을 들여놓으셨습니다!

자바의 동작 원리와 소스코드, 그리고 활용범위까지 배우는 시간이었습니다 :)

자바 문법에 맞춰 작성을 하면, 컴파일 하여 컴퓨터로 실행시키는 원리였죠!

 

자바는 활용도가 아주 높기도 하며 사용자가 많아 자료를 찾기도 수월한 개발 언어 중 하나입니다.

제 포스팅을 통해 프로그래밍 세계에 입문하시는 모든 분들, 화이팅입니다!

내일은 더 알찬 내용으로 돌아오도록 하겠습니다 :)

읽어주셔서 모두 감사합니다!!

728x90
반응형