java 47

나 혼자 떠드는 자바 : 자바 언어가 가지는 특징 '배워본 언어가 없는데 어떻게 비교를 해'

2. 자바 언어가 가지는 특징 : 배워본 언어가 없는데 비교를 어떻게 해. 지금까지 내가 접한 입문서의 전반부에 자주 등장하는 내용이다. 프로그래밍 언어가 무엇인지를 시작으로 언어의 발전 과정을 시간의 흐름으로 살펴본다. 그리고 뒤이어 다루는 주제는 그 언어의 특징이다. 처음 자바의 특징을 볼 때 당황했다. 비교 대상이 있어야 특징을 이해할 것 아닌가. '나중에 다시 보면 이해할 수 있습니다. 지금은 그냥 한 번 쭉 읽어보고 넘어가세요'라고 말하기 시작하는 부분이다. 프로그래밍을 처음 접하면 난해한 내용이지만 시도는 해볼만 하다. 많은 특징들이 있지만 자주 다루는 몇 가지 내용을 선정했다. 1. 이식성이 높은 언어이다. 2. 속도가 느리다. 3. 객체 지향 언어이다. 4. 메모리를 자동으로 관리한다. 5..

나 혼자 떠드는 자바 : 프로그래밍 언어란

1. 프로그래밍 언어란. 이제 시작인데 졸음이 몰려오는 기분이다. 언어가 언제부터 왜 생겨났는지 그 배경을 시작으로 어떻게 발전해 왔는지에 대해 아는것은 중요하다. 하지만 이런 내용들에 대해선 지금은 다 각설하고 하나는 기억하고 넘어가자. 자바는 1995년 썬 마이크로 시스템즈에서 개발한 프로그래밍 언어이고, 창시자는 제임스 고슬링(James Arthur Gosling)이다. 내용을 통째로 생략했지만, 누가 언제 어디서 만들었는지 정도는 알아야 하지 않을까? 본격적으로 프로그래밍 언어가 무엇인지 생각해보자. 단어에서 알 수 있는 사실은 프로그래밍 언어도 하나의 언어 라는 것이다. 이 사실을 잊지 말자. 언어는 다음과 같이 정의 되어있다. "생각, 느낌 따위를 나타내거나 전달하는 데에 쓰는 음성, 문자 따..

나 혼자 떠드는 자바 : 내용구성

정리는 다음 순서로 진행할 예정이다. 1. 프로그래밍 언어란 프로그래밍 언어도 언어라고 부르는 이상 일상에서 사용하는 언어와 크게 다르지 않다. 2. 자바 언어가 가지는 특징 배워본 언어가 없는데 어떻게 비교를 해? 비교라는건 둘 이상의 서로 다른 무엇인가의 공통점과 차이점을 통해 서로의 장단을 샅피는 일이다. 문제는 처음 배우는데 비교 대상이 없다. 그래서 일상의 예를 통해 자바의 특징에 대해 살펴 본다. 3. 자료의 형태 (data type) 상수, 변수, 배열, (구조체), 클래스 그리고 사용자 정의 자료형 이 세상 모든것은 아무리 사소해 보이는 것도 존재의 이유가 있다. 이런 것들을 만들 수 밖에 없었던 선배 개발자 분들의 생각을 추측해 본다. 4. 자바 실행 환경 자바 설치 방법 즐거운 메모장 ..

나 혼자 떠드는 자바 : 시작하며

'자바는 객체 지향 언어래' '객체가 뭔데 지향을 한대? 지양도 아니고' '객체가 뭔진 나도 몰라. 근데 엄청 좋은거래' '그래? 그럼 어디에 좋은건데?' '몰라. 자바는 객체 지향 언어인데 이게 좋다는것만 알아. 중요하다고 하니까 일단 외워. 나중에 알게 된대.' 프로그래밍 언어를 처음 배우던 때를 기억한다. '이런게 있습니다. 보고 넘어가세요. 나중에 이해 됩니다.' 생각해보면 무슨 의도인지 알겠으나, 그냥 넘어가라는 말이 싫었다. 마치 '넌 아직 어려서 몰라. 크면 다 알게 된단다.' 같은 느낌이다. 돌려 말했지만 무시 당하는 기분. 어느날 생각했다. 이렇게 배우는 방법밖에 없는걸까. 처음부터 이해할 수 없을까. 이번 글의 목표는 개념적인 부분을 이해하는 것이다. 때문에 문법적인 언어 사용 방법보다..

Whiteship Java live study S01

Whiteship Java live study season 01 현재 네이버 블로그에 정리되어 있어 링크로 대체 합니다. pc 환경에 최적화 되어 있습니다. WEEK 01 :: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. JVM 이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성요소 JDK 와 JRE의 차이 WEEK 02 :: 자바 데이터 타입, 변수 그리고 배열 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var WEEK 03 :: 연산자..

javascript 에서의 this 키워드

java를 공부하다보면 중요한 개념으로 this 라는 키워드를 만나게 된다. java에서는 보통 다음과 같은 경우에 만나볼 수 있다. public class Test { private String name; private int age; public Test() {} public Test(String name, int age) { this.name = name; this.age = age; } public static void main(String[] ar) { } } this가 사용된 부분은 6, 7 라인이다. 여기서 this는 this 키워드가 작성된 클래스 자기 자신을 뜻한다. 그래서 5라인에서의 name, age와 구분하기 위해 자기 자신임을 뜻하는 this를 사용하고 있는 부분이다. 그 증거로 ..

Archive/js 2017.12.21

자바에서 인터페이스를 사용하는 이유

자바에서 인터페이스를 사용하는 이유가 무엇일까? 아마 인터페이스를 처음 접해보는 분들이 많이 궁금해 하는 부분일거라고 생각한다. 그냥 그 기능을 클래스로 구현해도 될 것 같은데 번거롭게(?) 인터페이스까지 사용해서 또 인터페이스에 대한 학습도 해야하기 때문이다. 이세상 모든건 그게 왜 필요한지를 알면 이해하는데 도움이 많이 된다. interface라고 쓰는 이 인터페이스는 결론부터 얘기하면 '공동 작업시 충돌을 방지하기 위해서'라고 한다. 다른 많은 이점이 있지만, 처음 내가 배울 당시 인터페이스 사용 이유는 공동 작업을 할때 유연함을 위해서다. 다음과 같은 상황을 생각해보자. A씨는 필기도구를 사용해서 글씨를 쓰는 프로그램을 개발하는 프로젝트를 진행하고 있다. 그러던 중 같은 팀의 연필을 개발하는 김개..

Archive/Java 2017.07.09

자바 배열 객체에 대해서

Q > 예를 들어 int[] a = new int[5]가 있으면 이 배열도 객체라는데 무슨말인지 잘 모르겠습니다. int라는 이름의 클래스가 있다는 말과 동일하나요? Integer Wrapper 클래스와 연관성은 없는 것 인가요? 알기 쉽게 설명해주세요. A > 배열을 객체라고 부른다. 그 이유가 무엇일까? 보통 객체를 생성한다라고하면 클래스의 객체를 많이 떠올린다. 그렇다고 클래스부터 설명을 할 수는 없는 노릇이다. 클래스에 대해서는 안다고 가정하고 클래스와 객체와의 관계에 대해 생각해보자. 클래스는 자료형이다. 이 사실을 잊어선 안된다. 왜냐면 자료형은 그 자료가 가진 형태를 나타내는 것이기 때문에 스스로는 사용될 수 없다. 누군가가 그 형태를 가지는 실체를 만들어 내야만 사용할 수 있다. 이런 관점..

Archive/Java 2017.07.07

자바에서 클래스와 객체의 관계

나는 개인적으로 클래스와 객체를 설명할 때 붕어빵 틀을 비유하는걸 싫어한다. 마음에 들지 않는다. 내가 배울 당시 이렇게 배우지 않았을 뿐만 아니라 개인적으로 잘 와닿지도 않았다. 그래서 내가 배운 방법으로 클래스란 무엇이며 이 클래스와 객체와의 관계를 어떻게 이해하면 좋은지 정리해보려 한다. 클래스는 우리가 일상 생활속에서 볼 수 있는 모든 것들을 표현할 수 있는 도구라고 생각하는 것도 좋은 발상이다. 클래스를 구성하고 있는 큰 두가지 개념이 있다. 하나는 멤버필드라는 개념이며 다른 하나는 멤버 메서드라는 개념이다. 멤버 필드란, 그 클래스가 표현하고자 하는 대상이 가지는 속성들을 의미한다. 높이, 색상, 속도, 속력, 방향, 무게 등 일반적인 사물들이 가질 수 있는 모든 속성들을 말한다. 멤버 메서드..

Archive/Java 2017.06.09

java 환경변수 설정 방법과 이유

java 개발을 하려면 환경변수를 설정해야한다. 아니 더 정확히는 명령 프롬프트에서 컴파일하고 실행하려면 환경변수를 설정해야 한다. 명령 프롬프트는 cmd창으로 알고 있는 보통 검정색 있어보이는 화면을 말한다. 우선 환경변수라는것이 무엇인지부터 알아보자. IT(정보기술) 용어로, OS의 셸(shell) 등에 설정되어 있다. 변수의 이름과 의미는 미리 정해져 있기 때문에 환경변수를 읽으면 시스템의 설정을 어느 정도 알 수 있다. OS의 환경변수는 시스템의 실행파일이 놓여 있는 디렉토리의 지정 등 OS 상에서 동작하는 응용소프트웨어가 참조하기 위한 설정이 기록된다. 응용소프트웨어로부터는 시스템 콜(system call:프로그래밍 언어에서 지원하지 않는 기능에 대하여 운영체계의 루틴을 호출하여 이용하는 것)이..

Archive/Java 2017.06.08