H'academy
  • H'academy
  • Web
    • Back-end
      • Spring Framework
        • Spring 개발환경 구축
          • Project 생성
          • Maven 설정
          • Maven 저장소 위치 설정
          • Apache Tomcat 연동
          • Lombok 설정
        • Spring MVC Project
          • pom.xml
          • web.xml
          • root-context.xml
          • servlet-context.xml
          • DispatcherServlet
        • Controller
          • File Upload / Download
          • RestController(작성중)
        • Spring Test
          • Assert 단정문
          • Spring 환경 연동 테스트
          • MockMvc Test
        • Spring AOP
          • AOP 용어
          • Pointcut Expression
          • Filter
          • Interceptor
          • Filter vs Interceptor
          • Controller Advice(작성중)
        • Spring JDBC
          • DBCP
          • myBatis
            • ResultMap 활용
        • ETC
          • Logging
            • Tomcat Logging 설정
          • Property 관리
          • E-mail
            • Gmail 변경사항
          • Scheduler
          • Websocket
      • Spring Boot
        • STS 다운로드
        • 프로젝트 생성
        • 프로젝트 구조
        • Spring Devtools
        • Spring Controller
          • JSP 연동
            • * JSP 생성불가 문제
            • Spring Boot 3.x
          • Model
          • 요청 파라미터 처리
          • 경로 변수 처리
          • 요청 메소드
          • Redirect
          • Spring Actuator
        • Spring Boot JDBC
          • Database 정보
          • DAO Pattern
          • ORM Framework
            • myBatis
              • Mapper 생성
            • Spring Data JPA
        • Spring AOP
          • AspectJ
          • Filter
          • Interceptor
          • ControllerAdvice
        • REST API
        • Spring WebSocket
        • Send Mail
        • Logging
        • Spring Boot Test
        • Lombok
      • Java EE
        • 개발환경 구성
          • Server와 Client
          • Web Server와 WAS
        • Dynamic Web Project
      • Apache Tomcat
        • Apache Tomcat 구조
        • Tomcat User 생성
        • Tomcat Manager 설정
      • Maven
      • Jenkins
        • Installation
          • Github Webhook 설정
          • Maven 연동
        • Project setting
          • 소스 코드 관리 설정
          • 빌드 유발 설정
          • 빌드 작업 설정
      • OpenAPI(swagger)
        • swagger 2.x (legacy)
        • swagger 3.x (boot)
        • Swagger UI 꾸미기
        • SpringDoc
    • Front-end
      • HTML
        • Heading
        • <A>
        • <IMG>
        • <DIV>
        • <TABLE>
        • <FORM>
          • <INPUT>
          • <SELECT>
          • <TEXTAREA>
          • <FIELDSET>
        • List
      • CSS
        • CSS 적용 방식
          • 크기(size)
            • 픽셀(px)
          • 색상(color)
        • CSS 선택자
          • 스타일 우선순위
        • CSS 주요 속성
          • 크기 속성
            • border
            • margin
            • padding
            • box-sizing
          • 배경 속성
          • 글자 속성
            • font
            • text
          • 배치 속성
            • position
            • display
            • overflow
            • float
            • flexbox
        • CSS Reset
      • JS
        • syntax
          • let, const
          • 구조 분해 할당
          • spread operator
          • Object copy
          • this
          • module
        • jQuery
          • structure
          • function
          • ajax
            • ajax file upload
        • VueJS
          • CDN(Vue3)
            • 기본 구조
            • Vue Devtools
            • jQuery vs VueJS
            • Vue instance
              • data
                • IME issue
              • v-model
              • template
              • computed
              • watch
                • deep watch
                • vs Computed
              • methods
            • Vue directive
              • v-text
              • v-html
              • v-bind
                • v-bind style
                • v-bind class
              • v-on
                • once
                • prevent
              • v-show
              • v-if
              • v-for
          • Vue-cli 3
            • 프로젝트 구조
            • src
              • main.js
              • App.vue
              • HelloWorld.vue
            • Vue Router 4
              • History mode
              • 404 not found
              • Guard
                • beforeEach
            • Vuex
              • 이동 횟수 측정
            • axios
              • interceptor
          • Vue-electron
        • ReactJS
          • CDN(React18)
            • 템플릿 설명
            • JSX
            • render
            • Handling Events
              • onClick
              • onInput
            • Component
              • 클래스 컴포넌트
                • state
                • props
                • event
                  • Mouse
                  • Input
                • lifecycle
              • 함수형 컴포넌트
                • useState
                • useEffect
                • useReducer
                • useMemo
                • props
                • 조건부 렌더링
          • CRA
            • 자원 경로 설정
            • src 절대 경로 설정
            • react-router
            • Context API
            • Electron 설정
        • Webpack
          • NodeJS
          • Git
    • Ubuntu server
      • Jenkins
    • 테스트 도구
      • JMeter
        • Test Plan
        • Test Plan(with login)
        • Plugin 설치
    • WebRTC
  • Base Language
    • Java
      • Java 실행 과정
        • 개발 환경 구축
        • 샘플 코드 작성
        • 컴파일/실행
        • 환경 변수 설정
      • Java 초급
        • Hello world
        • 자료와 정보
        • 변수
          • 정수
            • 정수의 저장 원리
            • 정수형 변수 생성
          • 실수
            • 실수의 저장 원리
            • 실수형 변수 생성
          • 논리
            • 논리형 변수 생성
          • 문자
          • 문자열
            • 문자열 변수 생성
          • 사용자 정의 자료형
        • 연산자
          • 대입 연산
          • 부호 연산
          • 산술 연산
          • 복합 대입 연산
          • 증감 연산
          • 쉬프트 연산
          • 비트 연산
          • 비교 연산
          • 논리 연산
          • 삼항 연산
          • 변환 연산
        • 표준 입출력
          • 표준 출력
          • 표준 오류 출력
          • 표준 입력
            • Scanner 입력
        • 제어문
          • if 구문
            • 단일 조건
            • 두 가지의 조건
            • 여러 가지의 조건
          • switch~case 구문
          • while 구문
          • do~while 구문
          • for 구문
        • 랜덤(Random)
        • 배열
          • 1차원 배열
          • 2차원 배열
          • 다차원 배열
          • Sort
            • 선택 정렬
            • 버블 정렬
            • 삽입 정렬
      • Java 중급
        • 객체 지향 프로그래밍
        • 클래스
        • 인스턴스
        • 필드
        • 메소드
          • 설정(setter) 메소드
          • 반환(getter) 메소드
        • 생성자
        • 접근 제한
          • private
          • package
          • protected
          • public
        • 정적(static)
        • 불변(final)
        • 상수(constant)
        • 상속
          • this와 super의 이해
          • 멤버 변수 설정
          • 멤버 메소드 설정
          • 생성자 설정
        • 추상화
          • 추상 클래스
          • 인터페이스
        • 다형성
        • 중첩 클래스
          • 일반 중첩 클래스
          • static 중첩 클래스
          • 지역 중첩 클래스
          • 익명 중첩 클래스
      • Java API(작성중)
        • java.lang
        • java.util
        • java.text
        • java.time
        • java.io
        • java.net
        • java.sql
        • java.awt
        • javax.swing
      • Java 고급
        • 제네릭(Generic)
        • 열거형(Enum)
        • Annotation Type
          • Retention
          • Target
          • Nested Annotation
        • Java Reflection
          • Intro
          • Class
          • Field
          • Constructor
          • Method
          • Package
      • JDBC
        • 드라이버 로드
        • 연결 생성
          • JDBC Driver 유형
        • JdbcTemplate
      • Java 버전별 변경사항
        • Java 1.8
          • Lambda Expression
          • Stream API
          • java.time 패키지
        • Java 9
        • Java 12
          • switch~case
        • Java 13
          • Text Block
    • Arduino
      • 학습 준비
        • Reference
        • 아두이노 온라인 시뮬레이터
        • 전기의 이해
        • 그라운드(GND)의 이해
      • 개발 환경 구축
        • CH340 보드 설치
        • Editor 글꼴 설정
      • 아두이노 제어
        • 코드의 구성
        • 시리얼 출력
        • 디지털 출력
          • LED 출력
        • PWM 출력
        • 시리얼 입력
        • 디지털 입력
          • PIR 센서
        • 아날로그 입력
          • 온도 센서(LM35DZ)
          • 조도 센서
          • 가스 센서
        • 피에조 부저
        • 서보 모터 제어
          • 시리얼 서보 모터 제어
          • 스위치 서보 모터 제어
        • 온습도 센서(DHT-11)
        • LCD
      • 아두이노 통신
        • 블루투스(Bluetooth)
          • HC-06
            • 온도 센서 활용
          • HM-10
        • 와이파이(Wi-Fi)
          • ESP-01
            • WiFiEsp 라이브러리 추가
            • WiFiEsp 네트워크 스캔
        • 이더넷(Ethernet)
        • ArduinoJson 라이브리 사용
    • Regular Expression
  • Database
    • Oracle
      • 설치
        • SQL Plus
        • SQL Developer
        • DBeaver
        • Docker(Mac OS)
      • SQL
        • 관리자 명령
          • 사용자 관리
          • 권한 관리
          • Encoding 설정
          • 서비스 포트 설정
        • 사용자 명령
          • 테이블 관리
            • 테이블 항목 제약 조건
            • 외래키 제약조건
            • 데이터 유형
          • 시퀀스 관리
          • 데이터 관리
            • 데이터 추가
            • 데이터 조회
              • 오라클 내장 함수
              • 그룹 조회
              • Top N Query
            • 데이터 수정
            • 데이터 삭제
          • 뷰 관리
          • 인덱스 관리
          • 집합 연산
          • 테이블 조인
            • 등가 조인
            • 외부 조인
        • HR 계정
        • 기타 명령
          • 컬럼 간격 조정
      • 내보내기 및 불러오기
        • EXPDP, IMPDP
        • Docker로 실행중인 경우
      • 기타
        • 자동 세션 제거
        • Tablespace 관리
        • Unlock user
  • 면접대비
    • Q&A
      • Java
      • Database
      • Web
      • IT 일반상식
  • ETC
    • Eclipse IDE
      • 설치
      • 화면 설명
      • 환경 설정
      • 프로젝트 생성
      • 소스파일 작성 및 실행
    • Github
      • Github 계정 관리
      • Github 저장소 관리
        • Profile
        • Collaborators
        • Code
        • Issues
        • Pull requests
        • Action
          • Vue 3 Deploy Action
      • Personal Access Token
      • Git ignore 설정
        • Spring 개발용 샘플
      • Github Eclipse 연동
        • Branches
        • Project
        • Team project
          • Dynamic web project
          • Spring Boot Project
          • Branch 생성
          • Pull Request
          • Branch 보호
          • Branch 다시 생성
    • Figma
      • Team
      • Design
      • Component
    • 과정평가형
      • 실기 모의고사 1회
      • 실기 모의고사 2회
      • 실기 모의고사 3회
      • 실기 모의고사 4회
    • VScode
      • Live Server 실행 오류
      • Github 계정 변경
    • Naver ToastUI Editor
      • Editor 만들기
        • Editor options
          • File upload
      • Viewer 만들기
    • 문자 인코딩 방식
    • OBS
      • 녹화 잡음 제거 설정
    • Semantic Version
Powered by GitBook
On this page
  • 프로그래밍 언어와 자바
  • 컴퓨터 프로그래밍
  • 컴퓨터 프로그래밍 언어
  • 자바의 특징
  1. Base Language

Java

PreviousWebRTCNextJava 실행 과정

Last updated 2 years ago

프로그래밍 언어와 자바

자바(Java)는 프로그래밍 언어의 한 종류이다. 프로그래밍 언어는 아주 많은 종류가 있으며, 만들어지고 사라지는 것을 반복하고 있다.

자바는 그 중 20년을 넘게 장수하고 있는 언어중 하나로서 개발자가 모를 수 없을 정도로 높은 비중을 차지하고 있다. 특히 시스템의 변화가 크지 않은 한국 개발 시장에서 자바의 점유율은 압도적이며, 가장 취업이 잘 되는 언어 중 하나라고 할 수 있다.

이 문서에서는 프로그래밍 언어로서 자바가 가지는 특징과 문법에 대한 이해를 목적으로 한다. 작성하는 예시는 필자의 주관적인 견해가 들어있기 때문에 독자의 이해에 도움이 되지 않을 수 있으므로 필요시 댓글로 질문해주시기 바란다.

컴퓨터 프로그래밍

컴퓨터 프로그래밍(Computer Programming)이란 다음과 같이 에 정의되어 있다.

컴퓨터 프로그래밍(영어: computer programming) 또는 간단히 프로그래밍(programming, 문화어: 프로그램 작성) 혹은 코딩(coding)은 하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술을 말한다.

좀 더 와닿게 변환해서 설명하면 원하는 바를 이루기 위한 컴퓨터를 사용한 해결과정 정도가 될 수 있다. 여기서 가장 중요한 것은 컴퓨터를 사용한다는 것이며, 컴퓨터에게 명령을 내리거나 컴퓨터의 작업을 확인하는 등 컴퓨터와의 의사소통 과정이 중요하다는 것을 알 수 있다.

일반적으로 다음에 해당하는 계산들이 우리가 앞으로 컴퓨터에게 지시할 작업이다.

  • 너무 간단해서 직접 하기 부끄러운 계산

  • 너무 간단하지만 양이 많아서 하기 귀찮은 계산

  • 복잡하거나 양이 방대해서 하기 버거운 계산

컴퓨터 프로그래밍 언어

컴퓨터와 의사소통을 한다는 것은 사람과의 의사소통 개념과는 다르다. 컴퓨터는 생명체가 아니고 수동적이기 때문에 사람의 명령을 집어넣어야 하는데, 이를 위해서는 컴퓨터가 돌아가는 원리에 대해서 살펴볼 필요가 있다.

컴퓨터를 포함한 전자제품들은 전기를 이용하여 작동하며 전기가 끊어지면 멈추는 특징을 가지고 있다. 즉, 전기를 조절하여 우리가 원하는 작업을 지시해야 한다는 이야기가 되므로 프로그래밍을 하고 싶다면 전기부터 공부해야 한다는 결론에 이르게 된다.

하지만 우리는 전기를 공부할 생각이 없기 때문에 선구자들이 만들어 놓은 다양한 변환 기법들을 이용하여 명령을 전기 신호로 변환하여 전달하게 되며, 이러한 도구들을 프로그래밍 언어라고 부른다.

언어가 순위가 높은 데는 이유가 있겠지만 어피 우리는 자바를 배울 예정이기 때문에 2등이 자바라는 것에 만족해야겠다. 중요한 것은 자바는 아주 오랜 기간 최상위권을 지키고 있는 정말 몇 안되는 언어 중 하나라는 것이다.

자바의 특징

그렇다면 자바를 배워야 하는 강력한 이유는 무엇이며, 가장 큰 특징은 무엇일까.

여기에 정답은 없겠지만 필자가 생각하는 한국에서 자바를 배워야 하는 가장 큰 이유 중 하나는 넓은 취업 시장이라고 생각한다. 프로그래밍 언어를 배워서 우리가 하고 싶은 것은 궁극적으로 둘 중 하나로 귀결된다.

  • 프로그래밍 기술을 연마하여 취업하여 돈을 번다.

  • 세상을 뒤집을만한 프로그램을 개발하여 돈을 번다.

물론 취미로만 배우는 경우도 있을 수 있지만, 생 업으로 삼으려는 절박한 사람들을 대상으로 작성되는 문서이기 때문에 어느 정도 이해해줬으면 한다. 대부분의 프로그래밍 언어를 시작하는 성인들의 목적은 전자인 취업일 수밖에 없다. 따라서 넓은 취업 시장은 자바를 배워야 하는 가장 강력한 이유 중 하나라고 할 수 있다.

물론 프로그래밍 언어적으로도 많은 특징들을 가지고 있다.

  • JVM 기반의 언어

  • 컴파일/인터프리터 방식의 하이브리드 언어

  • 객체 지향 언어

  • Spring Framework의 기반이 되는 언어

  • 안드로이드의 기반이 되는 언어

진짜 특징들에 대해서는 인터넷 검색을 통해서도 충분히 좋은 자료들을 찾을 수 있다(절대 귀찮아서 그런게 아니다).

중요한 것은 자바도 프로그래밍 언어의 한 종류이며, 궁극적인 목적은 컴퓨터에게 작업지시를 내리는 것 정도로 요약할 수 있다. 이를 위해서 개발 도구를 지원하며, 개발 도구에 대해서는 다른 문서에서 살펴보는 것으로 한다.

프로그래밍 언어는 아주 다양하게 존재하며, 통계 사이트인 에 따르면 글 작성 시점을 기준 구글 검색량을 기반으로 하여 가장 관심 있는 언어 순위 1등은 파이썬(Python)이다.

위키백과
PYPL