홈페이지 수정 1/? - 기본 용어 파악
1. 기본 용어 파악
7. 개발 환경 구성 (Eclipse ↔ Tomcat)
아래 용어들의 해설은 인터넷 검색을 통해 파악하였습니다.
주로 위키백과나 나무 위키를 참고하였고, 100% 정답은 아닐 수 있습니다.
따라서, 언제든지 내용을 수정할 수 있도록 해설 마지막에 마침표를 찍지 않았습니다.
웹 [Web] : WWW(World Wide Web)을 줄여서 Web이라고 칭하며, 문자, 사진, 영상, 음향 등의 정보를 한꺼번에 제공하는 멀티미디어 서비스를 말함. Web의 원래 의미는 거미집, 복잡하게 얽혀 있기 때문에 웹을 씀
웹 브라우저 [Web Browser] : 인터넷을 통해 웹 정보를 검색할 수 있도록 해주는 프로그램
Ex) Chrome, Safari, Internet Explorer & Edge, Firefox, Opera, Vivaldi, Torch, Midori, Avant, Maxthon, Whale . . .
웹 사이트 [Web Site] : 웹 서비스를 제공하는 개인 or 기관이나 장소
홈페이지 [Homepage] : 웹 사이트의 주소를 입력했을 때, 처음으로 보여지는 웹 페이지
웹 서버 [Web Server] : 웹 서비스를 제공하는 호스트 컴퓨터 (Slave의 개념)
클라이언트 [Client] : 서버 시스템과 연결하여 주된 작업아니 정보를 서버에 요청하고 그 결과를 돌려받는 컴퓨터 시스템 (Master의 개념)
호스팅 [Hosting] : 서버 컴퓨터의 전체 또는 일정 공간을 이용할 수 있도록 임대해주는 서비스.
호스팅 서비스의 종류는 웹 호스팅, 서버 호스팅, 메일 호스팅 등 다양함
도메인 [Domain] : 숫자로 이루어진 인터넷상의 컴퓨터 주소를 인간이 쉽게 판단할 수 있도록 문자로 표현.
시스템, 조직, 조직의 종류, 국가 이름 순으로 구분
DNS [Domain Name System] : 문자로 된 인터넷 주소를 숫자로 된 IP 주소로 바꿔주는 시스템
TCP/IP [Transmission Control Protocol/Internet Protocol] : 서로 다른 시스템을 가진 컴퓨터들을 서로 연결하고, 데이터를 전송하는 데 사용하는 통신 프로토콜들의 집합
프로토콜 [Protocol] : 통신 시스템이 정보를 교환하기 위해 사용하는 통신 규칙과 약속
OSI 모형 [Open System Interconnection Reference Model] : 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신 계층을 나누어 설명한 것. 보통 OSI 7 계층 모형이라고 함
웹 애플리케이션 서버 [Web Application Server] : 클라이언트/서버 환경에서 트랜잭션 처리 및 관리와 애플리케이션 실행 환경을 제공하는 미들웨어 소프트웨어 서버
트랜잭션 [Transaction] : 데이터 통신 시스템에서 관리의 대상이 되는 기본적인 정보를 기록한 기본파일이나 데이터베이스에 대해서 그 내용에 추가, 삭제, 갱신 등의 논리적 기능을 수행하는 행위(거래) 및 작업
데이터베이스 [Database] : 여러 사람 또는 컴퓨터에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합. 자료항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높임. 약어로는 DB
MVC [Model View Controller] : 소프트웨어 설계에서 세 가지 구성 요소인 모델(Model), 뷰(View), 컨트롤러(Controller)를 이용한 설계 방식.
Model - 소프트웨어 內 데이터 / View - 사용자에게 보이는 화면 / Controller - 모델과 뷰의 상호작용 관리
자바 [JAVA] : 썬 마이크로시스템즈에서 1995년에 개발한 객체 지향 프로그래밍 언어임. 2010년에 오라클이 썬 마이크로시스템즈를 인수하면서 JAVA의 저작권을 소유하게 되었음. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재 웹 어플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용됨. JAVA를 다른 컴파일 언어와 구분 짓는 가장 큰 특징은 컴파일된 코드가 플랫폼 독립적이기 때문에 자바 가상 머신(JVM)과 개발에 필요한 표준 라이브러리 세트와 컴파일러의 환경만 맞추면 자바 프로그램은 모든 환경에서 동일하게 동작함
자바스크립트 [JavaScript] : 프로토타입기반의 객체지향 프로그래밍 언어로 스크립트 언어에 해당함. 특수한 목적이 아닌 이상 모든 웹 브라우저에 인터프리터가 내장되어 있어 HTML, CSS와 함께 웹을 구성하는 요소 중 하나임. HTML이 웹 페이지의 기본 구조를 담당하고, CSS가 디자인을 담당한다면 JavaScript는 클라이언트 단에서 웹 페이지가 동작하는 것을 담당함. 웹 페이지를 자동차에 비유하자면, HTML은 자동차의 뼈대, CSS는 자동차의 외관, JavaScript는 자동차의 동력이라고 볼 수 있음
인터프리터 [Interpreter] : 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경. 원시 코드를 기계어로 번역하는 컴파일러와 대비됨. 인터프리터는 다음의 과정 가운데 적어도 한 가지 기능을 가진 프로그램임
① 소스 코드를 직접 실행
② 소스 코드를 효율적인 다른 중간 코드로 변환하고, 변환한 것을 바로 실행
③ 인터프리터 시스템의 일부인 컴파일러가 만든 또는 미리 컴파일된 저장 코드의 실행을 호출
객체 지향 프로그래밍 [Object-Oriented Programming, OOP] : 프로그램 설계방법론이자 개념의 일종으로, 프로그램을 단순히 데이터와 명령을 통한 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식. 객체란 하나의 역할을 수행하는 '메서드와 변수(데이터)'의 묶음으로, 메시지를 주고받으며 데이터를 처리할 수 있음
클래스 [Class] : 하나의 클래스는 필드(Field), 생성자(Constrctor), 메소드(Method)로 구성됨
필드 [Field] : 다른 말로 멤버변수나 전역 변수라고 불림. 어떠한(객체) 데이터를 저장하기 위한 역할을 담당. 필드는 클래스의 내부이면서 생성자와 메서드 밖에서 정의됨
생성자 [Constrctor] : new 연산자를 통해서 인스턴스를 생성할 때 반드시 호출이 되고 제일 먼저 실행되는 일종의 메소드(하지만 메서드와는 다름) 임. 생성자는 인스턴스 변수(필드 값 등)를 동기화시키는 역할을 함. 생성자는 반드시 클래스명과 동일하게 정의해야 하고, 생성자 앞에는 접근 제어자(public 등)만 올 수 있음.(메서드는 static과 같은 수식어를 작성 가능) 반환 값이 없으므로 void나 자료형을 작성할 수 없음.(메서드는 void나 자료형이 있어야 함)
메서드 [Method] : 멤버 함수(Member Funcion)라고도 하며, 객체 지향 프로그래밍에서 객체와 관련된 데이터와 멤버 변수에 대한 접근 권한을 갖는 서브 루틴(또는 함수). 클래스 기반 언어에서는 클래스 내부에 정의되어 있음. 메서드는 프로그램이 실행되고 있는 런타임에(동적 바인딩) 클래스에서 생성된 인스턴스와 관련된 동작을 정의하거나 컴파일 타임(정적 바인딩) 중에 클래스 인스턴스 (또는 클래스 객체)에 저장되어 있는 데이터에 접근할 수 있는 특수 속성을 가지고 있음. 바인딩은 클래스와 메서드 간의 연결관계를 의미함
변수 [variable] : '변하는 수'라는 뜻으로 값이 수시로 변하는 수를 변수라고 함
상수 [constant] : '항상 같은 수'를 뜻함. 변수와 반대되는 개념
자바 애플릿 [JAVA Applet] : JAVA 기반의 웹 브라우저 플러그인 기술. 애플릿은 플러그인의 하나로서 전용 위젯 엔진이나 더 큰 프로그램 범위 내에서 실행되는 특정한 작업을 수행하는 조그마한 응용 프로그램을 말함. 웹 브라우저, 제어판과 같은 다른 프로그램에서 실행되는 소프트웨어 구성 요소로 볼 수 있음. 애플릿은 독립적으로 사용되지 않으며 작은 기능을 가지고 있음. 방식으로 보자면 ActiveX, 어도비 플래시 및 AIR, Silverlight와 크게 다를 것은 없지만, 특징은 운영체제 상에서 직접 실행되는 것이 아니라 JVM에서 실행됨. 따라서 자바 애플릿을 실행하기 위해서는 JVM을 운영체제에 미리 설치해놓아야 함
JDK [JAVA Development Kit] : JAVA 환경에서 구동되는 프로그램을 개발하는 데 필요한 툴들을 모아놓은 소프트웨어 패키지. JRE(JAVA Runtime Environment),와 JAVA Byte Code Compiler, JAVA Debugger 등으로 이루어짐. JSP Container 등 일부 프로그램은 실행에 JDK를 요구함
JRE [JAVA Runtime Environment] : 자바 실행 환경의 약자로, JVM 이 JAVA 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 포함하고 있음
JVM [JAVA Virtual Machine] : 자바 가상 머신은 JAVA Byte Code를 OS에 맞게 해석 해주고 실행할 수 있는 주체를 의미함. Byte Code는 기계어가 아니므로 OS에서 바로 실행되지 않기에 JVM이 OS가 Byte Code를 이해할 수 있도록 해석, JIT 컴파일러를 통해 JAVA 파일 하나로 어느 디바이스든 JVM 위에서 실행할 수 있음. JVM은 크게 Class Loader, Runtime Data Areas, Execution Engine 3가지로 구성됨
JIT Compiler [Just In Time Compiler] : C/C++과 같이 프로그램을 실행하기 전에 처음 한 번 컴파일 하는 대신, 프로그램을 실행하는 시점에서 필요한 부분을 즉석으로 컴파일하는 방식을 말함. 전통적인 입장에서 컴퓨터 프로그램을 만드는 방법은 두 가지가 있는데, 인터프리터 방식과 정적 컴파일 방식으로 나눌 수 있음. 이 중 인터프리터 방식은 실행 중 프로그래밍 언어를 읽어가면서 해당 기능에 대응하는 기계어 코드를 실행하는 반면, 정적 컴파일은 실행하기 전에 프로그램 코드를 기계어로 번역함. JIT 컴파일러는 두 가지의 방식을 혼합한 방식으로, 실행 시점에서 인터프리터 방식으로 기계어 코드를 생성하면서 그 코드를 캐싱하여, 같은 함수가 여러 번 호출될 때 매번 기계어 코드를 생성하는 것을 방지함. 즉, 자바에서는 컴파일러가 자바 프로그램 코드를 Byte Code로 변환한 다음, 실제 Byte Code를 실행하는 시점에서 JVM이 Byte Code를 JIT 컴파일을 통해 기계어로 변환함. 최근, JVM과 .NET, V8(node.js)에서는 JIT 컴파일을 지원함
컴파일 [Compile] : 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 과정을 의미함. 컴파일러(Compiler)는 이 행위를 하는 프로그램을 말함. 원래의 문서를 소스 코드 혹은 원시 코드라고 부르고, 출력된 문서를 목적 코드라고 부름. 목적 코드는 주로 다른 프로그램이나 하드웨어가 처리하기에 용이한 형태로 출력되지만 사람이 읽을 수 있는 문서 파일이나 그림 파일 등으로 옮기는 경우도 있음. 즉, 원시 코드에서 목적 코드로 옮기는 과정을 컴파일(Compile)이라고 함
서블릿 [Servlet] : 서버에서 웹 페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바(Java)로 작성된 프로그램 또는 그 사양을 말하며, 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종임. 서블릿은 JSP와 비슷한 점이 있지만, JSP가 HTML 문서 안에 JAVA 코드를 포함(MVC에서 View 역할)하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함(MVC에서 Controller 역할)하고 있다는 차이점이 있음. 한 줄로 정의하자면 웹 프로그래밍에서 클라이언트의 요청을 처리하고, 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술이라고 요약할 수 있음
서블릿 컨테이너 [Servlet Container] : HTTP 요청을 받아서 Servlet을 실행하고 생명주기를 관리하는 역할을 함. 또한, Servlet과 웹 서버가 서로 통신할 수 있는 방법을 제공하고 멀티 스레딩을 지원하여 클라이언트의 다중 요청을 알아서 처리함. apache-tomcat의 톰캣(tomcat)은 서블릿 컨테이너의 일종
HTTP [HyperText Transfer Protocol] : WWW 상에서 클라이언트와 서버 사이에서 정보를 주고받을 때 사용되는 요청/응답(request/response) 프로토콜. 주로 HTML 문서를 주고받는 데 쓰임. TCP와 UDP를 사용하며, 80번 포트를 사용함. 1996년 버전 1.0 그리고 1999년 1.1이 각각 발표되어 현재까지 쓰이고 있음
HTML [HyperText Markup Language] : 웹 페이지의 제목, 단락, 목록 등과 같은 본문을 위한 구조적 의미를 나타내는 것 뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적 문서를 만들 수 있는 방법을 제공함. 이미지와 객체를 내장하고 대화형 양식을 생성하는 데 사용될 수 있음. HTML은 웹 브라우저와 같은 HTML 처리 장치의 행동에 영향을 주는 Javascript와 본문과 그 밖의 항목의 외관과 배치를 정의하는 CSS 같은 스크립트를 포함하거나 불러올 수 있음. HTML과 CSS 표준의 공동 책임자인 W3C는 명확하고 표상적인 마크업을 위하여 CSS의 사용을 권장함
CSS [Cascading Style Sheets] : 마크업 언어가 실제 표시되는 방법을 기술하는 언어로, HTML과 XHTML에 주로 쓰이며, XML에서도 사용할 수 있음. W3C의 표준이며, 레이아웃과 스타일을 정의할 때의 자유도가 높다는 장점이 있음. 마크업 언어(HTML 등)가 웹 사이트의 몸체를 담당한다면 CSS는 오소가 액세서리 같은 꾸미는 역할을 담당한다고 할 수 있음. 즉, HTML 구조는 그대로 두고 CSS 파일만 변경해도 전혀 다른 웹 사이트처럼 꾸밀 수 있음. CSS3의 경우 그림자 효과, 그라데이션, 변형 등 그래픽 편집 프로그램으로 제작한 이미지를 대체할 수 있는 기능이 추가되었으며, 다양한 애니메이션 기능이 추가되어 어도비 플래시를 어느 정도 대체하고 있음
마크업 [Markup] : 데이터나 파일이 프린터로 출력되거나 화면에서 어떻게 보여야할 것인지를 나타내기 위해, 또는 그 문서의 논리적인 구조를 묘사하기 위해 텍스트나 워드프로세싱 파일의 특정 위치에 삽입되는 일련의 문자들이나 기호. (마크업에 사용되는 표지를 흔히 "태그"라고 부름)
URL [Uniform Resource Locators] : 네트워크 상에서 자원이 어디 있는지 알려주기 위한 규약. 즉, 컴퓨터 네트워크와 검색 메커니즘에서의 위치를 지정하는 웹 리소스에 대한 참조. 흔히 웹 사이트 주소로 알고 있지만, URL은 웹 사이트 주소뿐만 아니라 컴퓨터 네트워크 상의 자원을 모두 나타낼 수 있음. URL 구조는
"protocol" :// "post" : "port" / "resource path" ? "query" / 로 구성됨
디렉터리 [Directory] : 파일 분류를 위해 붙이는 이름공간, 보통 MS-DOS, UNIX와 같은 CLI(Command Line Interface) 환경에서는 디렉터리라고 하고, Windows, OS X와 같은 GUI(Graphic User Interface) 환경에서는 폴더라고 함
PHP [HyperText Preprocessor] : 프로그래밍 언어의 일종으로, Apache 혹은 PHP용 웹 서버에서 동작하는 언어. 가볍고 빠르며, IIS에서도 실행됨. Database ↔ {PHP / ASP / JSP} ↔ HTML 구성으로 웹 언어들을 Database와 연동하여 동적으로 표현해줄 수 있음
ASP [Active Server Pages] : 마이크로소프트가 인터넷 정보 서비스(IIS)에서 동적 웹 페이지 생성 용도로 사용할 것을 목적으로 제작한 서버 사이드 스크립트 엔진. 확장자는 .asp를 사용하고, 1996년 출시된 IIS 3.0부터 기본으로 포함되기 시작하였으며, 이후 새 버전의 IIS가 출시될 때마다 같이 버전업 되었음. 최종 버전은 2000년에 출시된 IIS 5.0에 포함된 ASP 3.0
JSP [JAVA Server Pages] : 서블릿의 사용을 통해 웹페이지의 내용이나 모양을 제어하는 기술. 마크업(HTML 이나 XML)과 연결된 동적인 웹 페이지를 만드는 자바 코드들을 의미함. 각 페이지는 처음 요청되었을 때, JSP엔진에 의해 자동으로 서블릿으로 컴파일되어 실행됨. JSP는 자바 클래스, 서블릿, 애플릿, 웹 서버 등과의 다양한 대화 방법을 제공함. JSP는 여러 웹 서버가 이미 구현되어 있는 프로그램이기 때문에 코드를 다른 변경 없이 실행시켜도 더 뛰어난 이식성을 갖게 됨. 톰캣이나 RESIN, JSERV에서 실행됨
ASP.NET [Active Server Pages .NET] : 2002년에 처음 선을 보인 ASP의 후속작. .NET Framework 위에서 구동되는 서버 사이드 웹 프레임워크. 닷넷 프레임워크, 닷넷 코어 기반이기 때문에 지원 언어라면 어떤 것이든 사용할 수 있는 것이 특징이지만 기본적으로는 C#, Visual Basic .NET이 많이 사용됨
닷넷 프레임워크 [.NET Framework] : 마이크로소프트에서 개발한 Windows 프로그램 개발 및 실행 환경(프레임워크). MS가 공식 지원하는 오픈 소스 크로스 플랫폼 버전으로 Mono 등이 존재함. 닷넷 프레임워크를 사용 하는 언어들로 작성된 소스 코드는 각 언어에 맞는 컴파일러를 거쳐 .NET CLR용 중간 코드인 CIL로 컴파일된 후 .exe 파일로 래핑(wrapping)됨. 그리고 .NET CLR은 이 파일을 JIT 컴파일 방식으로 읽어 들여 기계어 번역을 수행함. CIL은 .NET CLR이 설치된 곳이라면 어디서든 컴파일이 가능하며, JAVA Byte Code처럼 어셈블리어와 유사한 형태임
CLR [Common Language Runtime) : 공용 언어 런타임은 마이크로소프트 닷넷 이니셔티브의 가상 머신 구성요소임. 프로그램 코드를 위한 실행 환경을 정의하는 마이크로소프트의 공통 언어 기반(CLI) 표준의 기능임. 공통 언어 런타임은 공통 중간 언어(CIL, 이전에는 MSIL로 알려져 있었음)라고 불리는 Byte Code의 형태를 실행함. 공통 언어 런타임을 사용하는 개발자들은 C#dlsk VB 닷넷과 같은 언어로 프로그래밍하며, 해당 언어의 컴파일러가 소스 코드를 공통 중간 언어 코드로 변환한다. 일반적으로 런타임에 공통 언어 런타임의 JIT 컴파일러가 공통 중간 언어 코드를 운영 체제의 네이티브 코드로 변환하지만 마이크로소프트 닷넷 프레임워크에 포함된 NGen 같은 AOT 컴파일러를 사용하면 중간 언어 코드를 타깃 머신에서 실행 전에 네이티브 코드로 컴파일해 둘 수도 있음. 이 경우 JIT 컴파일로 인한 추가 CPU/Memory의 부담을 없애고, 컴파일된 기계어를 여러 프로세스에서 공유할 수 있으며, 애플리케이션 시작 시간을 단축하는 장점은 있으나 컴파일한 코드의 크기가 크고, 실행 시간 정보를 이용한 최적화가 불가능해 오래 실행되는 서버 프로그램에서 기대할 수 있는 추가적인 성능 향상을 꾀할 수 없음
이니셔티브 [Initiative] : 사전 상의 의미로 '시작, 착수, 계획'이란 뜻을 가진 단어로, 어떠한 일을 먼저 착수를 시작해 기선 제압하여 얻는 주도권을 의미함. 즉, 어떠한 제약조건이나 제약 상황을 사전에 정의하거나 추가하여 향후의 프로세스에서 문제가 되지 않도록 해주는 요소를 의미함
CLI [Common Language Infrastructure] : 공통 언어 인프라 또는 공통 언어 기반은 마이크로소프트 닷넷 프레임워크, 모노, 포터블 닷넷과 같은 수많은 런타임의 중심부를 형성하는 실행 코드와 런타임 환경을 설명하기 위해 마이크로소프트가 개발한 오픈 규격임. 이 규격은 여러 개의 높은 수준의 언어가 다른 컴퓨터 플랫폼에서 특정한 구조를 위해 별도의 수정 과정 없이 사용될 수 있게 만들어줌. CLI는 단지 규격이지, 추가되는 "기능"이 아니며, CLI 규격의 범위 밖의 부분까지 포함하는 공통 언어 런타임(CLR)과 자주 혼동함. CLI 규격은 다음의 네 가지 부분을 서술함
① 공통 형 체계(CTS)
② 메타데이터
③ 공통 언어 규격(CLS)
④ 가살 실행 시스템(VES)
CLI [Command-Line Interface] : 명령 줄 인터페이스 또는 명령어 인터페이스는 가상 터미널 또는 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻함. 즉, 작업 명령은 사용자가 컴퓨터 입력장치(키보드 등)를 통해 문자열의 형태로 입력하며, 컴퓨터로 부터의 출력 역시 컴퓨터의 출력장치(모니터 등)를 통해 문자열 형태로 나타남
CIL [Common Intermediate Language) : 공통 언어 기반과 닷넷 프레임워크에서 인간이 이해할 수 있는 가장 낮은 수준의 프로그래밍 언어이며, 닷넷 프레임워크를 대상으로 하는 언어들은 Byte Code로 변환되는 CIL로 컴파일됨. CIL은 객체 지향 어셈블리어이며 완전한 스택 기반으로 가상 머신을 통해 실행됨. 닷넷 프로그래밍 언어를 컴파일하는 동안, 소스 코드는 플랫폼, 프로세서 특유의 목적 코드가 아닌, 공통 중간 언얼 코드로 변환됨. 공통 중간 언어는 닷넷 프레임워크를 지원하는 환경에서 실행할 수 있는 CPU와 플랫폼 독립 명령어 세트임. 공통 중간 코드는 실행되는 동안에 안전 여부를 확인함으로써 완전한 이진 파일보다 더 나은 보안과 신뢰성을 제공함
터미널 [Terminal] : GUI 위에서 동작하는 커맨드-라인 인터페이스를 의미함. 콘솔과의 차이점이라면 콘솔은 GUI를 거치지 않는 반면, 터미널은 별도의 접속 GUI 프로그램을 사용함 (PuTTY, Xshell, Tera Term, MobaXterm 등)
아파치 [Apache] : 공개용 HTTP 웹 서버, 작고 빠르기 때문에 중소형 웹 서버에서 많이 쓰임. 보통 BSD, 리눅스 등 유닉스 계열에서 많이 운용되지만 윈도우나 노벨 넷웨어 같은 기종에서도 운용됨
톰캣 [Tomcat] : 아파치 소프트웨어 재단에서 개발하는 JAVA 기반의 서블릿 컨테이너이자 웹 서버. JSP/Spring으로 웹 사이트를 구축한다면 톰캣은 거의 반드시 사용됨. Tomcat은 수컷 고양이를 뜻하는 영어 단어이며, 톰캣의 존재로 인해 JSP 사용자가 크게 늘어나 ASP는 쓰는 사람만 쓰는 언어가 되었다고 함. 물론 한국 및 서구권에서는 ASP 비중도 꽤 큰 편임. (번외) 프로그래밍에서 개발환경을 구축할 때, 환경변수를 지정하는 경우가 많은데, 톰캣은 특이하게 TOMCAT_HOME이 아닌 CATALINA_HOME이라는 변수를 사용한다. JAVA의 경우 JAVA_HOME, 오라클 데이터베이스의 경우 ORACLE_HOME, Android SDK의 경우에도 ANDROID_HOME 등을 사용하는데 톰캣은 변수가 이름과 전혀 관련 없는 특이한 케이스임. 그 이유는 톰캣의 개발자인 제인스 데이비슨에 따르면 본인이 캘리포니아의 카탈리나 섬을 좋아해서 그렇게 지었다고 함
IIS [Internet Information Services] : 마이크로소프트 윈도우를 사용하는 서버들을 위한 인터넷 기반 서비스들의 모임으로, 이전 이름은 인터넷 정보 서버(Internet Information Server) 였음. 즉, 리눅스 기반 서버에서 Apache-Tomcat 등으로 웹 서버를 구축한다면, Windows 기반 서버에서 웹 서버를 구축하기 위해서는 IIS를 사용함
BSD [Berkeley Software Distribution] : 1977년부터 1995년까지 미국 캘리포니아 대학교 버클리의 CSRG(Computer Systems Research Group)에서 개발한 유닉스 운영 체제로, 오늘날 BSD라는 용어는 유닉스 계열 운영 체제 계열에서 분기되어 형성된 BSD 파생판을 두루 가리키는 용어로 자리 잡혔음. 오리지널 BSD 코드로부터 파생된 운영 체제들은 현재까지도 활발히 개발되고 널리 사용됨
리눅스 [Linux] : 리누스 토르발스가 커뮤니티 주체로 개발한 컴퓨터 운영 체제. 혹은 커널을 뜻하기도 함. 리눅스는 무료 소프트웨어와 오픈 소스 개발의 가장 유명한 표본으로 들 수 있음. 리눅스는 다중 사용자, 다중작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS) 임. 엄밀하게 따지면 '리눅스'라는 용어 자체는 리눅스 커널만을 뜻하지만, 리눅스 커널과 GNU 프로젝트의 라이브러리 도구들이 포함된, 전체 운영 (GNU/리눅스) 체제를 나타네는 말로 흔히 쓰임. 리눅스 배포판은 핵심 시스템 외에 대다수 소프트웨어를 포함하며, 현재 200여 종류가 넘는 배포판이 존재함. 리눅스 재단에 따르면 퍼블릭 클라우드 워크로드의 90%, 세계 스마트폰의 82%, 임베디드 기기의 62%, 슈퍼 컴퓨터 시장의 99%가 리눅스로 작동함
GNU [GNU's Not Unix] : 운영 체제의 하나이자 컴퓨터 소프트웨어의 모음집. GNU는 온전히 무료 소프트웨어로 이루어져 있으며, 그중 대부분이 GNU 프로젝트의 GPL로 라이센스 됨
유닉스 [Unix] : 교육 및 연구 기관에서 즐겨 사용되는 범용 다중 사용자 방식의 시분할 운영 체제를 의미함. 1970년대 초반 벨 연구소 직원인 켄 톰슨, 데니스 리치 등이 처음 개발하였고, 오늘날의 유닉스 시스템은 여러 회사들과 비영리 단체들이 이 커널을 활용하여 다양한 운영체제를 개발하고 있음. 유닉스는 처음부터 다양한 시스템 사이에서 서로 이식할 수 있고, 멀티 태스킹과 다중 사용자를 지원하도록 설계되었음. 유닉스의 상표권은 오픈 그룹이 가지고 있으며, 유닉스 소스 코드에 대한 저작권은 Novell, Inc.가 소유하고 있음
커널 [Kernel] : 컴퓨터의 운영 체제의 핵심이 되는 컴퓨터 프로그램의 하나로, 시스템의 모든 것을 완전히 통제함. 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공함. 커널은 아래 세 가지 역할을 수행함
① 추상화 : 같은 종류의 부품에 대해 다양한 하드웨어를 설계할 수 있기 때문에 하드웨어에 직접 접근하는 것은 문제를 매우 복잡하게 만들 수 있음. 일반적으로 커널은 운영 체제의 복잡한 내부를 감추고 일관성 있는 인터페이스를 하드웨어에 제공하기 위해 몇 가지 하드웨어 추상화(같은 종류의 장비에 대한 공통 명령어의 집합)들로 구현됨. 하드웨어 추상화는 프로그래머가 여러 장비에서 작동하는 프로그램을 개발하는 것을 돕고, 하드웨어 추상화 계층(HAL)은 제조사의 장비 규격에 대한 특정한 명령어를 제공하는 소프트웨어 드라이버에 의존함
② 자원 관리 : 한정된 시스템 자원을 효율적으로 관리하여 프로그램의 실행을 원활하게 함
③ 보안 : 커널은 컴퓨터 하드웨어와 프로세스의 보안을 책임짐
넷웨어 [NetWare] : Novel, Inc. 가 개발한 네트워크 운영 체제(NOS). 초기에는 개인용 컴퓨터(PC)에서 여러 사용자들이 다양한 서비스를 이용하기 위해 컴퓨터 멀티태스킹으로 쓰였고, 제록스 네트워크 서비스 스택에 기반을 둔 네트워크 프로토콜을 사용함. 넷웨어는 오픈 엔터프라이즈 서버(OES)로 발전하였음
Resin [레진] : Caucho Technology의 웹 서버 및 JAVA 응용 프로그램 서버. Resin(GPL) 외에도 Resin Pro는 라이센스가 있는 엔터프라이즈 및 프로덕션 환경에서 사용할 수 있음. Resin은 JAVA EE 표준과 Quercus라는 mod_php/PHP 엔진을 지원함
AJP [Apache JServ Protocol] : 웹 서버에서 받은 요청을 웹 애플리케이션 서버로 전달해주는 프로토콜로, 해당 프로토콜은 Apache HTTP Server, Apahce Tomcat, 웹스피어, 웹로직, JBOSS, JEUS 등 다양한 WAS에서 지원함
Ajax [Asynchronous JavaScript and XML] : 에이잭스는 비동기적인 웹 애플리케이션의 제작을 위해 아래와 같은 조합을 이용하는 웹 개발 기법임
① 웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XSLT, XMLHttpRequest (Ajax 애플리케이션은 XML/XSLT 대신 미리 정의된 HTML이나 일반 텍스트, JSON, JSON-RPC를 이용 가능)
② 동적인 화면 출력 및 표시 정보와의 상호작용을 위한 DOM, JavaScript
③ 표현 정보를 위한 HTML (또는 XHTML)과 CSS
Node.js : 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있음. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능하게 함
루비 [Ruby] : 마츠모토 유키히로가 개발한 동적 객체 지향 스크립트 프로그래밍 언어. 루비는 순수 객체 지향 언어이기 때문에 정수나 문자열 등을 포함한 데이터 형식 등 모든 것이 객체임. 기능에는 클래스 정의, 가비지 컬렉션, 강력한 정규 표현식 처리, 다중 스레드, 예외 처리, 반복, 클로저, Mixin, 연산자 오버로드 등이 있고, 구문은 ALGOL계를 계승하면서 가독성을 중시하고 있음. 오랫동안 언어 사양이 명문화되지 않고 마츠모토의 구현 언어 사양에 준하는 것으로 기준이 되어 왔지만, 2010년 6월 RubySpec으로 언어 사양을 책정 중
XML [Extensible Markup Language] : 특수 목적을 갖는 마크업 언어를 만드는 데 사용하도록 권장하는 다목적 마크업 언어임. W3C에서 개발되었으며, XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있음. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌음
JSON [JavaScript Object Notation] : "속성 - 값" 또는 "키 - 값" 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷임. 비동기 브라우저/서버 통신(Ajax)을 위해, 넓게는 XML을 대체하는 주요 데이터 포맷이며, 특히 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있음. 자료의 종류에 큰 제한은 없으며, 컴퓨터 프로그램의 변수 값을 표현하는데 적합함. 본래는 JavaScript 언어로부터 파생되어 JavaScript 구문 형식을 따르지만 언어 독립형 데이터 포맷임. 즉, 프로그래밍 언어나 플랫폼에 독립적이므로, 구문 분석 및 JSON 데이터 생성을 위한 코드는 C/C++/C#/JAVA/JavaScript/Perl/Python 등 수많은 프로그래밍 언어에서 쉽게 이용할 수 있음
펄 [Perl] : 래리 월이 1987년에 만든 인터프리터 방식의 프로그래밍 언어 혹은 그 인터프리터 소프트웨어를 가리킴. 펄은 고급 언어, 범용 언어, 인터프리터 언어, 동적 언어 범주에 속함. 펄 언어는 실용성을 모토로 하고 있어 C나 sed, AWK, 셸 스크립트(sh) 등 다른 프로그래밍 언어에서 뛰어난 기능을 많이 도입하여 사용하고 있음. 동시대의 유닉스 명령 도구들이 지닌 불특정 한 데이터 길이의 제약 없이 강력한 문자열 처리 기능을 제공하며, 이를 통해 텍스트 파일의 조작을 용이하게 만들어 줌
파이썬 [Python] : 1991년 프로그래머인 귀도 발 로섬이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체 지향적, 동적 타이핑 대화형 언어임. 파이썬이라는 이름은 귀도가 좋아하는 코미디 <Monty Python's Flying Circus>에서 따온 것임. 파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델을 가지고 있음
링크 [Link] : 하나의 소프트웨어 개발 프로젝트에서 하나의 소스 파일만 생성될 수도 있지만 대부분 여러 개의 소프 파일이 생성됨. 여러 소스 파일에서는 각각에 존재하는 함수나 메서드를 호출하는 경우가 많은데, 이 때 각각의 소스 코드를 컴파일만 하면 함수나 메소드를 찾지 못해 호출할 수 없게 됨. 따라서 서로의 소스 파일을 연결해주는 링크 과정이 필요함. 링크에는 정적 링크와 동적 링크가 있으며, 정적 링크란 컴파일된 소스 파일을 연결해서 실행 가능한 파일을 만드는 것이고, 동적 링크란 프로그램 실행 도중 외부에 존재하는 코드를 찾아 연결하는 작업을 의미함. 예시로, JAVA의 경우 JVM이 실행 도중 필요한 클래스를 찾아서 클래스 패스(classpath)에 로드해주는 것이 동적 링크의 예
빌드 [Build] : 소스 코드를 실행 가능한 파일로 변환하는 과정. 컴파일은 빌드의 과정에 속하는데 컴파일과 링크 과정 또한 빌드에 속함. 즉, 소스 코드는 컴파일 과정과 링크 과정을 거쳐 실행 가능한 파일이 됨. 소스 코드를 컴파일하면 .o 형태의 오브젝트 파일이 되고, 링크하면 .exe와 같이 실행 가능한 파일이 생성됨
디버그 [Debug] : 디버그 빌드는 개발자가 개발을 하는 동안 테스트를 하기 위해 디버그 빌드를 이용해 실행파일을 만드는데, 이때 디버깅을 위한 정보들이 들어감. 대표적인 예로 디버그용으로 빌드를 하면 디버그 메모리 할당자를 사용하게 되고, 이는 할당된 모든 메모리 주위에 보호 바이트가 놓이게 되는데 이 보호 바이트는 메모리 덮어쓰기를 감지함. 이 밖에도 여러 가지 관련 정보가 들어가기 때문에 릴리즈 빌드보다 용량이 커지고 느린 특징이 있음. 또한, 해당 컴파일러가 없는 컴퓨터에서는 실행파일이 동작하지 않음
배포 [Release] : 모든 개발이 끝나고 배포하기 위해 릴리즈 빌드를 사용함. 디버깅을 위한 정보들을 빼고, 코딩한 소스만 컴파일하기 때문에 디버그 빌드보다 최적화로 빌드함. 따라서, 용량이 작고 속도가 빠르지만 디버깅 정보가 없기 때문에 정확한 디버깅이 어렵고, 디버그 모드에서 할당된 불필요한 메모리 영역이 릴리즈 모드로 빌드되어 없어지면서 종종 메모리 침법 오류가 일어남
배포(또는 배치) [Deploy] : 프로젝트 파일 또는 프로그램 등을 서버와 같은 기기에 설치하여 작동가능하도록 만드는 일련의 과정
메이븐 [Maven] : 문자 그대로의 의미는 전문가를 뜻하며, 아파치 소프트웨어 재단에서 개발한 JAVA용 프로젝트 관리 도구임. 프로젝트의 라이프사이클 관리를 위한 빌드 도구. 이에 따라 컴파일과 빌드를 동시에 수행. 테스트를 병행하거나 서버 측 Deploy 자원을 관리할 수 있는 환경을 제공하고, 라이브러리 관리 기능도 내포하고 있음. settings.xml 또는 pom.xml 파일에 필요한 라이브러리를 적으면 Maven이 알아서 다운받고 설치하며, 경로까지 지정해줌
그래들 [Gradle] : Groovy를 이용한 빌드 자동화 시스템. Groovy와 유사한 도메인 언어를 채용하였으며, 현재 안드로이드 앱을 만드는데 필요한 안드로이드 스튜디오의 공식 빌드 시스템이기도 함. JAVA, C/C++, Python 등과 같은 여러 가지 언어를 지원함
그루비 [Groovy] : JAVA에 파이썬, 루비, 스몰토크 등의 특징을 더한 동적 객체 지향 프로그래밍 언어. JVM에서 작동하는 동적 타이핑 프로그래밍 언어이고, 도메인 전문 언어와 단순화된 문법을 지원하여 코드가 읽기 쉽고 유지 보수하기 편함
스프링 프레임워크 [Spring Framework] : 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 함. 동적인 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있으며, 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로 쓰이고 있음
전자정부 표준프레임워크 [eGovFrame] : 대한민국의 공공부문 정보화 사업에서 플랫폼별 표준화된 개발 프레임워크를 의미함. 2008년에 스프링 프레임워크 등의 오픈소스를 기반으로 웹 사이트 개발 시, 필요한 여러 가지 기능들을 미리 구현해 놓았으며, 최근에는 모바일 개발을 위한 프레임 워크도 출시되고 있음
프레임워크 [Framework] : 어떠한 목적을 달성하기 위해 복작하게 얽혀있는 문제를 해결하기 위한 구조이며, 애플리케이션의 뼈대 역할을 하는 틀과 구조를 제어함. 개발자의 코드는 프레임워크 위에서 동작함
'Repairing > Software' 카테고리의 다른 글
홈페이지 수정 6/? - 개발 환경 구성 (Tomcat 설치) (0) | 2020.06.30 |
---|---|
홈페이지 수정 5/? - 개발 환경 구성 (Eclipse 설치) (0) | 2020.06.30 |
홈페이지 수정 4/? - 개발 환경 구성 (JAVA 설치) (0) | 2020.06.30 |
홈페이지 수정 3/? - 소스 코드 압축 및 다운로드 (0) | 2020.06.30 |
홈페이지 수정 2/? - 데이터베이스 구조 파악 (0) | 2020.06.26 |