Java

반응형

자바는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다.

처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용하고 있다. 현재 버전 14까지 출시했다.(2020년 05월 기준)

출처 위키백과

이 언어는 원래 제임스 고슬링의 사무실 밖에 있던 오크 나무를 따다

오크(Oak), 혹은 그린(Green) 이라고도 불렀으나,  오크(Oak) → 자바(Java)로 개명 후 출시

 

객체지향 언어 (Object-Oriented Programming, OOP)

프로그래밍은 두 가지 방식이 있습니다.

1. 절차 지향

2. 객체지향

 

여기서 소개하는 Java는 객체지향 언어입니다.

 

일단 Java에 대해 설명하라는 질문을 받으면 무조건 나와야 하는 게 객체지향 언어라는 것입니다.

객체지향은 Smalltalk라는 언어에서 처음 개념이 탄생했는데,

 

객체 지향의 장점

 

1. 캡슐화

필요한 속성(Attribute)과 행위(Method)를 하나로 묶고

그중 일부를 외부에서 사용하지 못하도록 은닉한다

관련된 코드와 데이터가 묶여있고 오류가 없어 사용이 편리합니다. 데이터를 감추고 외부 세계와의 상호작용은 메서드를 통하는 방법인데, 라이브러리로 만들어 업그레이드하면 쉽게 바꿀 수 있습니다.

 

2. 상속 (extends)

이미 작성된 클래스를 이어받아서 새로운 클래스를 생성하는 기법으로 위에서 말한 기존 코드를 재활용해서 사용하는 것을 의미합니다. 객체지향 방법의 큰 장점 중 하나입니다.

 

3. 다형성 (Overloading, Override)

하나의 이름(방법)으로 많은 상황에 대처하는 기법입니다. 개념적으로 동일한 작업을 하는 함수들에 똑같은 이름을 부여할 수 있으므로 코드가 더 간단해지는 효과가 있습니다.

 

객체 지향의 단점

 

1. 개발 설계의 복잡함

2. 느려지는 런타임 속도

 

자바 가상 머신( Java Virtual Machine, JVM)

  1. 자바는 ‘바이트코드(Bytecode)’를 생성한다. 바이트코드는 하드웨어에 종속적이지 않은 중간 파일로, 가상 머신을 거쳐 해석·실행하는 구조이다.
  2. 가상 머신으로 자바는 스마트폰, 컴퓨터, Mac, 리눅스 등 서로 다른 기기나 운영체제에서 동일한 프로그램을 개발하고 실행할 수 있다.

자바 플랫폼

  1. 자바 플랫폼은 자바 프로그램이 실행되는 특정 환경을 말한다.
  2. 여러 제약(화면, 입출력 장치, 성능 등) 때문에 모든 하드웨어나 적용 분야에서 동일한 자바를 사용하는 것은 불가능하다. 각 영역에 특화된 자바 플랫폼이 있다.

  • 중요 세 가지
  • JDK(Java Development Kit): 자바 프로그램 개발에 필요한 구성 요소
  • JRE(Java Runtime Environment): 자바 프로그램 실행에 필요한 구성 요소
  • API(Application Programming Interface): 자바 응용 프로그램 개발에 사용하는 라이브러리

자바의 장점

  1. 간결하면서도 강력한 객체지향 언어이다.
  2. 개방형 구조로 여러 기술과 융합이 가능하다.
  3. 플랫폼에 독립적이므로, 여러 운영체제나 하드웨어에서도 동일하게 실행한다.
  4. 많은 오픈소스 프레임워크로 생산성을 증가하고 유지보수 비용을 절감할 수 있다.

자바의 단점

  1. 처리 속도가 중요한 애플리케이션에는 적합하지 않다.
  2. GUI 요소가 많은 MS 윈도 응용 프로그램 개발에는 적합하지 않다.
  3. 하드웨어에 연결하여 제어할 수 없기 때문에(가상 머신 이용) 직접 하드웨어를 정밀하게 조정해야 하는 프로그램 개발에는 적합하지 않다.

자바 프로그램 개발 절차

  1. 자바 프로그램 개발은 자바 소스 코드(. java) 작성 → 자바 컴파일러 → 자바 바이트코드(. class, 컴파일) → 자바 가상 머신(JVM) → 운영체제, 하드웨어 → 실행의 단계로 진행한다.
  2. 바이트코드는 운영체제에 상관없이 가상 머신에서 실행하는 중간 코드이다.

정리

1. 자바(Java) 첫 공개 1995년이고, 제임스 고슬링이라는 선생님(아저씨)이 만들었다. 

2. 하드웨어에 종속적이지 않은 중간 파일로, 가상 머신을 거쳐 해석·실행하는 구조

    (운영체제, 하드웨어 특성을 타지 않는다는 말입니다.)

3. 개발할 땐 무조건 JDK를 받고, 자바로 만들어진 프로그램만 사용 시 JRE를 받자 (귀찮으니까 무조건 JDK)

4. 객체 지향 언어 (Object-Oriented Programming, OOP)

반응형
  1. 2021.02.25 12:49

    비밀댓글입니다

  2. ㅇㅇ 2021.09.23 18:14

    자바 진짜 단점: 코드 길고 가독성 구림. 프로그래머를 신뢰못하고 private, public 쓰게 만들어서 짜증남. 내부 변수 다 private으로 해놓고 getter, setter 쓰라고 해서 짜증남.

반응형

절대 정답이 아니며 , 회사마다 사람마다 쓰는 네이밍은 다릅니다 참고만 해주시면 감사하겠습니다.

 

네이밍( Naming ) 종류


1.camelCase(캐멀, 단봉낙타 표기법)

 

각 단어의 단어를 문자로 표기하고 붙여 쓰되, 맨 처음 단어는 문자로 표기함

띄어쓰기 대신 대문자로 단어를 구분하는 표기 방식

 

예시: backgroundColor, typeName, iPhone


2.PascalCase(파스칼, 쌍봉낙타 표기법) or Upper Camel Case

 

단어를 문자로 시작하는 표기법

 

예시: BackgroundColor, TypeName, PowerPoint


3.Hungarian notation(헝가리 언)

 

접두어를 사용하는 표기법

형식은 camelCase와 같지만, 맨 앞의 단어가 자료형을 나타내는 접두어임

 

예시: strName, bBusy, szName

 

3-1.헝가리 언 표기법

접두 데이터 타입
b byte, boolean
n int, shot
i int, shot(주로 인덱스로 사용)
c int, short(주로 크기로 사용)
l long
f float
d, db double
ld long double
w word
dw double word
qw quad word
ch char
sz NULL로 끝나는 문자열 ( string + zero )
str C++ 문자열
arr 배열(문자열 제외): 다른 접두어와 조합 가능
p 포인터(16bit, 32bit): 다른 접두어와 조합 가능
lp 포인터(64bit): 다른 접두어와 조합 가능
psz NULL로 끝나는 문자열을 가리키는 포인터(16bit, 32bit)
lpsz NULL로 끝나는 문자열을 가리키는 포인터(64bit)
fn 함수 타입
pfn 함수 포인터(16bit, 32bit)
lpfn 함수 포인터(64bit)

3-2. 헝가리 언 표기법 OOP ( Object Oriented Programming, 객체 지향 프로그래밍 )

접두어 데이터 타입
g_ 네임스페이스의 글로벌 변수
m_ 클래스의 멤버 변수
s_ 클래스의 static 변수
c_ 함수의 static 변수
출처: [명우니닷컴]

4.snake_case (스네이크) or under_scores (언더 스코프) 

 

단어를 밑줄 문자(_)로 구분하는 표기법

 

예시: background_color, type_name


5.UPPER_SNAKE_CASE(대문자 스네이크)

 

단어를 밑줄문자(_)로 구분하고 문자 전부 대문자로 기입하는 표기법 

주 사용 : Bash 변수, Java 상수(staic final)

 

예시 : MAX_PARTICIPANTS , MIN_PARTICIPANTS

static final int MAX_PARTICIPANTS = 10;

6.kebab-case (케밥)

 

하이픈(-)으로 단어를 연결하는 표기법

주 사용 : HTML  id, class, CSS

 

예시 : kebab-case, spinal-case, Train-Case, Lisp-case

출처:제타 위키

1.Java

예약어와 동일한 이름은 절대 금지

https://java119.tistory.com/21


1-1. 패키지 ( package  )

 

인터넷 도메인 주소의 역순을 많이 사용

 

자바 기본 라이브러리에서 사용 중인 java와 javax의 이름 사용은 제한

패키지명으로는 가급적 한 단어의 명사를 사용한다.

[com].[회사명].[프로젝트명].[최상위패키지명].[하위패키지명]…

 

예시 : package com.tistory.kakao.object;


1-2. 클래스 ( Class )

 

Java Class : PascalCase 

 

예시 : ClassName, Calc01, JqueryController


1-3. 인터페이스 ( interface  )

 

Java interface : PascalCase

 

택 1.

1. 인터페이스가 구현 클래스에 정보를 제공하는 경우 형용사 이름 사용 (~able, ~ible)

2. 일반 인터페이스 명사 사용

 

예시 1 : interface Serializable {...}

예시 2 : interface Controoler {...}


1-4. 메서드

 

Java Method : camel case, snake_case   

JavaScript function : camel case, snake_case 

 

예시 : getValue, get_Value


1-5. 변수( Variable )

 

Java Variable : camel case, snake_case   

소문자의 명사

 

예시 : int age; String name; int myAge; String myName;


1-6. 상수 ( Constant )

 

Java Constant : UPPER_SNAKE_CASE

모두 대문자로 사용

 

예시 : public static final int MAX_NUM = 100;


1-7. Enum

Enum 이름은 클래스 이름 규약을 따름, 세부 항목의 이름은 모두 대문자를 사용.

enum Season {SPRING, SUMMER, FALL, WINTER}


2.HTML

 

2-1.id/class

 

id : camel case

 

예시 : id="boardView", id="boardTB"

 

class : snake_case 

 

예시 : class="link_view"


반의어 모음

get/set

– add/remove

– create/destroy

– start/stop

– insert/delete

– increment/decrement

– old/new

– begin/end

– first/last

– up/down

– min/max

– next/previous

– open/close

– show/hide

– suspend/resume

– parent/child

반응형

+ Recent posts