JAVA 프로그래밍 공부 1일차 JAVA 란?

in #kr7 years ago

안녕하세요 . kimc1578 입니다.
오늘부터 java 프로그래밍 공부 1일차 시작이네요.
java를 시작으로 java,jsp,Spring,DB(Nosql,RDBMS) 등 전반적인 웹 프로그램 위주로 공부한 정보를 올릴려고 합니다.

그렇다면

프로그래밍이란 무엇인가?

컴퓨터를 통해서 프로그램을 만드는 일!
프로그래밍이란..PNG

그림과 같이 Java,C,C++을 이용하여 프로그램을 만드는 것을 의미 한다.

그렇다면 Java란 무엇인가?

컴퓨터에서 프로그래밍을 하려면 사람의 언어를 컴퓨터의 언어(기계어)로 변환 해줘야 한다.
그 언어를 변환하고 프로그램을 실행 할 수 있게 해주는 프로그래밍 언어이다.

많은 프로그래밍 언어중 Java 에 대해서 알아봅시다.

Java 에 대한 특징

특징

자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트 코드라는 특수한 바이너리 형태로 변환한다.
변환된 바이트 코드를 실행하기 위해서는 JVM(자바 가상 머신)이라는 특수한 가상머신이 필요하다.
이 가상 머신은 자바 바이트코드를 어느 플랫폼에서나 동일한 형태로 실행시킨다.
때문에 자바로 개발된 프로그램은 CPU나 운영체제의 종류에 관계없이 JVM을 설치할 수 있는 시스템 어디서나 실행할 수 있다.

자바는 이식성이 높은 언어이다.

이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.
예를 들면 윈도우 운영체제에서 실행하는 프로그램을 리눅스 또는 유닉스에서 실행할 수 있으면 이식성이 높은 것이다.
자바는 자바 실행 환경(JRE:Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능하다.
자바는 객체 지향 언어이다.

자바는 객체 지향 언어이다.

프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 것을 객체 지향 프로그래밍(OOP, Object Oriented Programming)이라고 한다.
객체 지향 프로그래밍에 사용되는 언어를 객체 지향 언어라고 한다.
자바는 객체를 만들기 위해 설계도인 클래스를 작성하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다.
자바는 객체 지향 언어의 특징인 캡슐화, 상속성, 다형성을 완벽하게 지원한다.

자바는 함수적 코딩 스타일을 지원한다.

객체 지향 프로그래밍 이전에 Lisp 또는 Scheme와 같은 함수적 프로그래밍 언어들이 있었지만 큰 호응을 얻지 못했다.
최근에 대용량 데이터 병렬 처리와 이벤트 지향 프로그래밍을 위해 함수적 프로그래밍이 다시 부각되고 있다.
자바는 자바 8부터 람다식(Lambda Expressions)을 지원하여 함수적 프로그래밍을 지원한다.
람다식을 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.

자바는 메모리를 자동으로 관리한다.

C++은 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야 한다. 만약 이 작업을 성실하게 해주지 않으면, 프로그램은 불완전해지고 갑자기 다운되는 현상을 겪게 된다.
자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며,. 메모리는 자바가 직접 관리한다.
객체 생성 시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector)를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.
자바 개발자는 메모리 관리의 수고를 덜고, 핵심 기능 코드 작성에 집중할 수 있다.

자바는 다양한 애플리케이션을 개발할 수 있다.

자바는 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다.
또, 단순한 콘솔 프로그램에서부터 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션, 그리고 모바일용 안드로이드 앱 등 거의 모든 곳에서 실행되는 프로그램을 개발 할 수 있다.
자바는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션(Edition) 형태로 정의하고 있다.

멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있다.

운영체제에 따라서 멀티 스레드를 구현하는 방법이 다르지만, 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하므로 운영체제에 상관 없이 멀티 쓰레드를 쉽게 구현할 수 있다.

동적 로딩(Dynamic Loading)을 지원한다.

자바 애플리케이션은 클래스로부터 생성 된 여러 개의 객체가 서로 연결되어 실행된다.
애플리케이션 실행 시 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다.
또, 개발 완료 후 수정 사항이 발생하더라도 해당 클래스만 수정 하면 되므로 전체 애플리케이션을 다시 컴파일 할 필요가 없다. 따라서 유지보수를 쉽고 빠르게 진행 수 있다.

막강한 오픈 소스 라이브러리가 풍부하다.

자바는 오픈 소스(Open Source) 언어이므로 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스의 양이 방대하다.
고급 기능을 구현하는 코드를 작성하는 대신 검증된 오픈소스 라이브러리를 사용하면 애플리케이션 개발 기간을 단축하여 생산성을 높이고 안정성도 높일 수 있다.

다음 포스팅 부터 자바 프로그래밍 설정 부터 tool 사용법을 알아보겠습니다.

Sort:  

자바 강좌도 있군요! 저는 C강좌중입니다ㅎㅎ
앞으로 kr-dev로 밀고나가야 겠어요
업보트 팔로우 하고 갑니다!

와우...진짜 공부해보고 싶은분야인데 차마 못했던... 멋지십니다 다음 포스팅도 기대할게요 ㅎ
보팅,팔로우 하고 갑니다! 자주 소통해요^^

네 좋은 정보들 많이 올리겠습니다. 차마 공부하다가 막히는 부분들에 대해서도 올릴려고 합니다.

좋은 글 감사합니다. 이와 같은 글을 보게 되는 것도 스팀잇의 장점인것 같네요.

네 저도 공부하는 입장이여서요. 다 같이 정보를 공유를 하면 좋을거 같아요.

#kr-dev 가 있습니다. ^^

좋은 정보 감사합니다.

안녕하세요
벤티 입니다.
kr-join 테그는 신입회원님 인사와
기존회원간의 환영
축제의 장소였으면 좋겠습니다

kr-join 테그 사용하는 부분에
있어서 정중히 부탁 드립니다

아 그렇군요 어제 tag추천을 받아서 작성한것 이어서 다른 tag사용하겠습니다.

스팀잇 사용에 있어서 필요한 사항을 링크하였습니다. 도움이 되길 바랍니다.

(제멋대로 엮은) 스팀잇 이용에 필요한 가이드(2017.06.21)update
https://steemit.com/guide/@woo7739/3kbwkq-2017-06-21

(제멋대로 엮은 태그)하드포크 이후 글이 너무 많이 올라옵니다.포스팅에 맞는 태그를 설정하시길 권합니다.(05.21)update
https://steemit.com/tag/@woo7739/5upuds

(제멋대로 엮은)스팀잇에 대한 의견들, 지나간 19하드포크와 다가올 20하드포크에 대해서(2017.06.24)update
https://steemit.com/guide/@woo7739/2017-06-18

Congratulations @kimc1578! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

The Steem community has lost an epic member! Farewell @woflhart!
SteemitBoard - Witness Update
Do not miss the coming Rocky Mountain Steem Meetup and get a new community badge!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!