HK

Java

[Java기초]1강, OOP! Java를 자바서 JVM!

AshBluebird 23 일 전 조회 수 62 추천 수 0

[Java기초]1강, OOP! Java를 자바서 JVM!

Ctrl + Shift + F10 //자바의 작동원리

이미 OOPJVM이 나온것에서부터 눈치를 첸 센스넘치는 분들도 계실텐데요! 오늘은 그 어느강좌에서도 처음에 소개시켜주지 않는 자바의 작동 원리입니다!(프로그래밍이 처음이신분의경우 이번 강좌는 어려울 수 있으니 초보자 파트만 보시면 됩니다!

참고 : Ctrl + Shift + F10 은 제가 사랑하는 IDE intelliJ 의 빌드 단축키 입니다.



Study(1, (Level.NOOB()); //초보자를 위한 파트 - 프로그래밍에 대한 이해

여러분, 영어 지겹도록 배우시죠? 영어를 보면 나는 너를 사랑한다를 I love You. 로 표현해 직역시, 나는 사랑한다 너를 이 됩니다. 이렇듯 한국말과는 품사의 배치 자체가 다릅니다. 프로그래밍 또한 마찬가지입니다. 프로그래밍 "언어" ㅖ를들면 HTML 이니까요 :). printf 라는 동사가 먼저 나오고, 그 이후 명사인 ""안의 말이 나올 뿐 입니다. 문장끝에 마침표를 찍듯이 세미콜론(;) 을 찍고요. 그러니까

영어와 다를게 없습니다.

여러분이 처음에 영어를 배우셧을땐 어떠셧나요? 많이 어려우셧을 겁니다. 알파벳을 처음볼땐 어떤 그림처럼 생겼다 느끼셧을테고, 문장을 처음 접하셧을때는 품사 배열이 뒤죽박죽이라 해석하는것도 굉장히 힘드셧을 것 입니다. 어떨땐 is 어떨땐 was로 쓰이고 때에따라 the 를 "디" 라고 발음하기도 하죠. 하지만 지금은 어떠신가요? 여러분이 I love You. 를 못읽으시나요? 나는 사랑해 너를 이라고 해석하시는지요? 아니죠. 나는 너를 사랑해 라고 굉장히 부드럽게 읽혀집니다. 프로그래밍 또한 마찬가지입니다. 처음엔 int 나 System.out.println() 이라는것들 그리고 ";" 이 굉장히 생소하시겠지만, 계속 공부하시다보면 마치 영어처럼 프로그래밍 언어가 자연스럽게 들리실 것 이고, 어떨땐 마치 단어퍼즐을 풀거나 책을 읽는것같아서 즐거우실때도 있으실 것 입니다 저는 주로 새로운 알고리즘 등을 발견했을때 그럽니다.

그러니 모두 힘내시기 바랍니다. 프로그래밍 언어가 자연스럽게 읽히고 쓰이는 그날까지!


Study(3,(Level.NOOB()); //초보자를 위한 파트 - OOP! FP! PP! & HTML!!!

전 파트에서 저희는 프로그래밍에대한 한가지의 편견을 벗겨내었습니다. 이제 저희가 배우려하는 Java 에 대해 알려드리려 합니다. 자바는 무엇일까요? 자바는 썬마이크로시스템즈에서 1995년에 개발한 객체지향 프로그래밍언어로 창시자는 제임스 고(Language)슬링이고, 2010년 오라클이 썬 마이크로 시스템지를 이누하면서 Java의 저작권을 고, OpenJDK 가 GPL2 나 Oracle JDK상업라이선스로 유료화정책을 강화하여 점점 망해가고있는 언어 이지만, 저희가 원하는건 이게 아니죠? 자바는 프로그래밍 언어중 OOP라는 방식에 초점을 둔 프로그래밍 언어입니다. 그렇다면 저희는 궁금한게 있겠죠. "OOP"란 무엇일까요?

OOP는 Objected Oriental Programming 의 약자로, 객체지향 프로그래밍 "방식" 이라고 불립니다.

한마디로 객체라는것을 중점에 둔 프로그래밍 방식이란거에요. 그렇다면 객체는 또 뭐죠?

여러분 여러분의 앞에는 마우스가 있습니다. 자 그럼 그 마우스를 자세히 살펴볼까요? 마우스의 색을 어떻죠? 하얀가요 검정색인가요? 아니면 다른 어떤색인가요? 버튼은 몇개나 있죠? 모양은 어떤가요? 마우스의 가격을 얼마였죠? 개발회사는요?

뜬금없이 마우스는 왜 물어보냐고요? 제가 요즘 마우스를 바꾸려고 하거든요

농담이고, 지금까지 제가 한 질문의 답변들이 모두 "마우스의 특성" 입니다. 이를 프로그램에서는 변수라는것으로 저장을 합니다. 그렇다면 마우스를 통해 무엇을 할 수 있죠? 일단, 우클릭과 좌클릭을 할 수 있으며 휠을 굴릴 수 있고, 누를수도 있습니다. 또한 마우스를 움직일수도 있겠죠. 이 모든것들이 "마우스의 행동" 입니다. 마우스나 다른 사물들에게 영향을 주죠. (마우스를 움직이면 컴퓨터의 커서가 움직이는것 처럼요) 이것을 프로그래밍 에서는 "함수(메소드)" 라고 합니다. 특정한 조건으로 불려지고, 불려진 뒤에는 어떠한 결과값을 내기도 안내기도하는 일종의 행동입니다.

제가 말한 객체는 이러한 특성과 행동 등으로 마우스를 정의하는 방식 입니다. 마우스 라는 객체 안에는 왼쪽버튼, 오른쪽버튼, 휠 이라는 또다른 객체가 있고, 마우스의 모양, 마우스의 제조회사, 가격, 마우스의 수명 같은 특성들 그리고 마우스를 좌클릭했을시, 우클릭했을시 나오는 전기신호 같은 행동 또한 있습니다. 이러한 객체를 기반으로 프로그램밍을 하는 방식이 OOP, 객체지향 프로그래밍 입니다. 자바는 이렇듯, 여러 객체들이 서로간의 상호작용을 통해 프로그램을 작동해나가는 객체지향 프로그래밍 입니다. 여담으로, 이와 다른 방식으로는 javascript등에서 쓰는 FP와 c에서쓰는 PP 가 있습니다.

하지만 여러분, 이렇게 객체들간의 상호작용만 하고 사용자와는 상호작용을 하지 않는다면, 프로그래밍이 시작될 수 있을까요? 여러분이 도미노를 멋지게 만들었다해도 결국 하나를 무너뜨리지 않으면 그 도미노는 제대로 작동 할 수 없겠죠?

프로그래밍 또한 마찬가지입니다. 결국 첫 도미노를 무너뜨려줄, 즉 프로그램의 상호작용을 시작해줄 무언가가 필요합니다.

public static void main(String[] args) {} //초보자를 위한 파트 - 도미노를 무너뜨릴 무언가

전 파트에선 첫 도미노를 무너뜨려줄 무언가가 필요하다고 말하며 끝이 났습니다. 그렇다면, 과연 프로그래밍에서는 어떤것이 그 역할을 해줄까요? 이미 제목에서 혹은 다른곳에서 보아서, 아시는분들도 있으시겠지만, 바로 main 함수(메서드)입니다! Ho라서 바꾼거 아니에요 메인 메서드는 만약 프로그램을 컴파일하고, 실행할 경우 가장 먼저 실행되는 함수입니다. 그렇기에 구모가 큰 프로그램의 경우 main 메서드가 여러 의 동작 순서 혹은 프로그램을 처음 실행할때의 셋팅대로 바꾸는 역할을 합니다.

자바에서는

public static void main(String[] args) { //실행할 내용 }

의 방식으로 쓰입니다. 저 앞에 붙은 public static void 나 괄호안의 String[] args 는 지금 굳이 알지 않으셔도 됩니다!

오늘은 프로그래밍이 무엇인지, 강좌부터는 본격적으로 여러분이 원하시는 "문법 강좌" 가 시작됩니다! 그러면 초보자분들은 다음에 다시뵈요!!


강좌 분량상 이번 숙련자파트는 다음강에 올려집니다
숙련자파트에서는 JVM과 자바 바이트코드등 좀더 자바의 기반을 알아보겠습니다!


글쓴이의 인기 게시글

  • 글쓴이의 인기 게시글이 없습니다.

7개의 댓글

PatrickKR
23 일 전

바이트코드...! 만세!! 기다리겠습니다!

 

마크러버
23 일 전

제목이 ㅋㅋ

근데 엄청 열심히 쓰셨네요

좋은 글 감사합니다

DevRuby
23 일 전

JVM : Java Virtual Machine - class 파일 실행

JRE : Java Runtime Environment - 라이브러리 파일 등 자바 실행에 필요한 것들

JDK : Java Development Kit - JRE + etc.

AshBluebird
23 일 전
@DevRuby

오옹 추가설명 감사합니다!

Phrack_
23 일 전

매우 정성글 ㄷㄷ 감사합니다~

AshBluebird
23 일 전
@Phrack_

2일정도 후에 숙련자파트와 다음강의 초보자 파트가 나올 예정입니다 ㅎㅎ

Phrack_
23 일 전
@AshBluebird

기대되네요!!

제목 글쓴이 조회 수 날짜 추천 수
[프리미엄] [2] [HK] 마인크래프트 개발 디스코드 - 컨텐츠를 만들고 서버 어드민이 되어보자! 5 U DC 430 4 일 전 0
[채널공지] 고퀄리티 서버 만들기 안내 DC 82 4 일 전 0
[python] 파이썬 디스코드봇 개발 #2 시간을 출력하는 명령어 만들기 2 DevRuby 99 18 일 전 0
[마크소식] Minecraft Bedrock - Beta 1.16.0.61 DC 46 18 일 전 0
[Java] [Java기초]1-2강, JavaVRMachine? AshBluebird 56 18 일 전 0
[마크소식] Minecraft Java Edition - Snapshot 20w20b 1 DC 112 19 일 전 0
[플러그인 제작] config.yml 만들기 2 브루스 99 22 일 전 1
[서버관리 기술] [네트워크 - DNS] 8.8.8.8 와 같은 DNS서버를 구축하기 보라색구미호 82 22 일 전 0
[커맨드 제작] 엔티티 구별은 태그를 붙여서 해주세요! /tag 7 허두 74 22 일 전 0
[Java] [Java기초]1강, OOP! Java를 자바서 JVM! 7 AshBluebird 62 23 일 전 0
[고퀄공모전] 마인크래프트 1.12.2 룰렛 스크립트 3 마크충 149 27 일 전 0
[스킨제작] 마인크래프트 하이큐 오이카와 토오루 스킨 배포 륜온 65 27 일 전 0
[JavaScript] [ JavaScript 기초강좌 ] 4강 함수 1 lukekeum 111 29 일 전 0
[플러그인 제작] [Paper 1.15 플러그인 만들기] 4.명령어 제작하기 1 choigun08 178 29 일 전 0
[서버관리 기술] [클라우드] 클라우드 서비스 의 정의 보라색구미호 58 2020.05.03 0
[스크립트 기초] 마인크래프트 스크립트 - 아이템 이름 얻는 법! 1 브금소리BGMSound 115 2020.05.02 0
[서버관리 기술] [클라우드] 클라우드 서비스 의 정의 보라색구미호 28 2020.05.02 0
[서버관리 기술] [클라우드] 클라우드 서비스 의 정의 보라색구미호 25 2020.05.02 0
[서버관리 기술] [통합] 시작하기 보라색구미호 46 2020.05.02 0
[데이터팩 제작] [tag 1편]아이템을 구분하는 tag를 추가하기! 2 WintChoco 82 2020.05.02 0
마인크래프트 플러그인 검색하는 노하우! 브루스 97 2020.05.01 0
[마크소식] Minecraft (Bedrock) - Beta 1.16.0.59 DC 84 2020.05.01 0




개발자 최신글
사진이 없습니다.

자유

와;; 화면비 안맞는거 이제 봤네;; 1

ys7

2020-06-02

0

https://www.koreaminecraft.net/files/thumbnails/435/766/001/262x150.crop.jpg
저택같은 기숙사(서버) 2

zoom5699

2020-06-02

1