비주얼 컴포넌트 라이브러리
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
VCL(Visual Component Library)은 Borland가 Delphi 및 C++Builder의 RAD 도구에서 사용하기 위해 개발한 윈도우 기반의 시각적 컴포넌트 라이브러리이다. 1995년 Delphi 출시와 함께 등장하여, 객체 지향 프로그래밍 방식으로 사용자 인터페이스를 쉽게 구축할 수 있도록 지원했다. C++Builder 출시 이후 C++에서도 사용 가능해졌으며, 현재 Delphi 및 C++Builder에서 수백 개의 컴포넌트를 제공한다. VCL은 .NET Framework의 WinForms에 영향을 미쳤으며, .NET 설계에 많은 부분에서 벤치마킹되었다. VCL은 윈도우 전용이며, 유니코드 지원이 늦다는 단점이 있다.
더 읽어볼만한 페이지
- 볼랜드 - 코드기어
코드기어는 보랜드에서 분사되어 개발 도구 및 데이터베이스 제품을 판매하는 브랜드였으나 엠바카데로 테크놀로지스에 인수되었으며, RAD 스튜디오, 델파이, C++빌더, 인터베이스 등이 주요 제품이다. - 볼랜드 - 오브젝트 파스칼
오브젝트 파스칼은 파스칼 언어에 객체 지향 기능을 더하여 개발되었으며, 델파이로 발전하여 다양한 플랫폼을 지원하는 컴파일러와 오픈 소스 구현이 존재하고 캡슐화, 상속, 다형성을 지원한다. - 컴포넌트 기반 소프트웨어 공학 - 컴포넌트 오브젝트 모델
컴포넌트 오브젝트 모델(COM)은 마이크로소프트에서 개발한 소프트웨어 컴포넌트 기술로, 서로 다른 애플리케이션이 객체를 통해 통신하고 기능을 공유할 수 있도록 하는 이진 인터페이스 표준을 제공하며, 다양한 프로그래밍 언어로 작성된 객체들의 상호 운용을 지원한다. - 컴포넌트 기반 소프트웨어 공학 - 공통 객체 요구 매개자 구조
공통 객체 요구 매개자 구조(CORBA)는 객체 관리 그룹(OMG)에서 분산 컴퓨팅 환경에서 객체 지향 기술을 통합하기 위해 제정한 표준 아키텍처로서, 객체 요청 브로커(ORB)를 통해 객체 간 통신을 제공하고 다양한 서비스를 지원한다. - 파스칼 소프트웨어 - 스카이프
스카이프는 2003년 설립된 인터넷 전화 서비스로, P2P 기술을 기반으로 음성 및 영상 통화, 인스턴트 메시징 등을 제공하며, 마이크로소프트에 인수되었고, 다양한 기능과 논란을 가지고 있다. - 파스칼 소프트웨어 - 치트 엔진
치트 엔진은 게임 메모리를 스캔하고 수정하여 게임 내 값을 변경하는 데 사용되는 프로그램이며, Direct3D 조작, 코드 인젝션, Lua 스크립트 지원 등의 기능을 제공하고, 치트 테이블을 통해 정보 저장 및 공유가 가능하며, 잠재적 위험 요소도 존재한다.
비주얼 컴포넌트 라이브러리 - [IT 관련 정보]에 관한 문서 |
---|
2. 역사
Borland가 자사의 Delphi 및 C++Builder RAD 도구에서 사용하기 위해 개발한 핵심 라이브러리이다. VCL은 이들 개발 도구와 긴밀하게 통합되어 함께 발전해 왔다.
1995년, 델파이의 첫 버전 출시와 함께 VCL이 세상에 나왔다. 그 이전 터보 파스칼 환경에서는 터보 비전이나 OWL 같은 프레임워크를 사용했는데, 이는 UI 객체 생성을 위해 직접 코드를 작성해야 하고, 윈도우 API에 대한 깊은 이해가 필요하며, 코드 재사용이 어려운 단점이 있었다.[1][2] 또한, 시각적 디자인 도구와의 연계도 매끄럽지 못했다.[3]
VCL과 델파이 언어는 이러한 문제들을 해결하기 위해 등장했다. 컴포넌트 기반 아키텍처, 속성(property)과 이벤트(event)를 활용한 객체 사용자 정의, 시각적 디자인과 코드의 유기적 결합 등 혁신적인 개념을 도입하여 UI 개발의 패러다임을 바꾸고자 했다.[4][5][6] 이는 당시로서는 획기적인 접근 방식으로 평가받았다.
이후 C++Builder가 출시되면서 VCL은 C++ 언어 환경까지 지원하게 되었다. 델파이 컴파일러가 생성한 정보를 바탕으로 C++에서도 VCL 컴포넌트를 사용할 수 있게 되었는데, 이는 .Net 등장 이전에 구현된 중요한 상호 언어 호환성 사례 중 하나이다.
현재 VCL은 델파이와 C++Builder 양쪽 개발 환경에서 모두 사용 가능하며, 수백 개에 달하는 다양한 시각적 및 비시각적 컴포넌트를 제공하며 꾸준히 발전하고 있다.
2. 1. 델파이와 VCL의 등장 (1995년)
Borland는 자사의 델파이 및 C++Builder RAD 도구에서 사용하기 위해 VCL을 개발했으며, 이 도구들과 긴밀하게 통합되어 있다.1995년 볼랜드는 최초의 오브젝트 파스칼 IDE 및 언어 버전인 델파이를 출시했다. 그 이전까지 볼랜드의 터보 파스칼은 주로 절차적 언어였고, 객체 지향 기능은 최소한으로 포함되어 있었다. 이 언어로 사용자 인터페이스(UI) 프레임워크를 구축하려면 터보 비전이나 OWL 같은 프레임워크를 사용해야 했다. MFC와 유사한 프레임워크인 OWL은 UI 객체를 생성하기 위해 직접 코드를 작성해야 하는 방식이었다.
VCL과 델파이 언어의 핵심 목표는 사용자 인터페이스 구축 방식을 근본적으로 바꾸는 것이었다. (참고로 파스칼의 델파이 변형은 모듈라(Modula)와 스몰토크(Smalltalk)에서 영감을 받은 속성(property) 및 런타임 형식 정보(RTTI)와 같은 여러 혁신적인 객체 지향 기능을 가지고 있었다.) 당시 대부분의 UI 코드 작업은 다른 클래스를 상속받아 새로운 클래스를 생성해야 했으며, 이렇게 만들어진 사용자 정의 객체는 재사용하기 어려운 경우가 많았다. 예를 들어, 특정 작업을 수행하도록 만든 버튼을 다른 응용 프로그램에서 그대로 가져다 쓰기 어려웠다.[1] 또한 UI 코드는 복잡해서 프로그래머가 윈도우 API를 깊이 이해하고 사용해야 했으며, GDI 리소스 관리 등 번거로운 작업도 직접 처리해야 했다.[2] 마지막으로, 시각적인 사용자 인터페이스는 당연히 시각적으로 설계되어야 하지만, 당시 이를 지원하는 도구는 주로 비주얼 베이직 정도였고, 이마저도 디자이너가 생성한 코드를 수동으로 편집하기 어려운 취약한 구조였다. 이는 오늘날에도 Qt와 같은 일부 C++ 기반 UI 프레임워크에서 여전히 나타나는 문제이다.[3]
델파이 언어와 VCL 프레임워크의 조합은 다음과 같은 특징을 통해 이러한 문제들을 해결했다.
- 객체와 하위 객체를 텍스트나 바이너리 형식으로 저장하고 불러올 수 있는 스트리밍 프레임워크 (VCL 프레임워크의 최상위 클래스인 TComponent)
- 객체의 설정을 코드가 아닌 스트림에 저장하는 폼 디자이너. 이 설정 정보가 다시 스트림에서 읽힐 때 객체가 스스로 생성될 수 있도록 함.
- 클래스를 상속하지 않고도 인스턴스를 사용자 정의할 수 있는 언어 기능. 이는 두 가지 방식으로 구현된다. 첫째, 속성(property)을 사용하여 객체 인스턴스가 스트리밍을 통해 쉽게 변경될 수 있는 자체 필드(예: 버튼의 캡션)를 가질 수 있게 한다. 둘째, 이벤트(event)라는 특정 코드 위치에서 호출되는 메서드 포인터를 다른 객체에서 처리할 수 있도록 한다. 즉, 메서드 포인터가 객체 인스턴스에 연결된다.[4] 다시 말해, 이는 "상속 대신 위임을 통해 사용자 정의 동작을 생성"하는 방식이다.[5]
- 운영체제의 네이티브 컨트롤(Windows 컨트롤)을 감싸서(wrapping) 쉽게 사용할 수 있게 하고, 리소스를 관리하는 프레임워크.[6]
이러한 특징들의 조합은 개발 방식을 크게 바꾸었다. 시각적 디자이너를 통해 컴포넌트의 설정을 스트림으로 저장하고, 이 설정 정보를 바탕으로 폼(윈도우 창)과 그 안의 다른 모든 컴포넌트들이 스스로 생성된다. 그리고 버튼 클릭과 같은 특정 동작에 대한 응답 코드는 폼의 메서드와 같은 한 곳에서 작성하여 UI 요소의 이벤트 처리기(예: OnClick)로 연결할 수 있었다. 이는 당시로서는 혁명적인 접근 방식이었으며, 이후 WinForms나 Cocoa 등 여러 다른 프레임워크에서도 유사한 방식이 사용되었다.
이를 통해 개발자들은 새로운 컴포넌트(새로운 시각적 또는 비시각적 클래스)를 훨씬 쉽게 작성할 수 있게 되었다. VCL은 윈도우 기반이며 공통 컨트롤 구현은 윈도우 API를 직접 감싸기 때문에, 근본적으로 완전한 네이티브 방식이다. 새로운 컨트롤은 처음부터 직접 구현하거나 기존 윈도우 컨트롤을 활용하여 만들 수 있다.
이후 C++Builder가 출시되면서, 델파이 컴파일러는 컴파일된 델파이 유닛에 대한 C++ 헤더 파일을 생성할 수 있게 되었다. 덕분에 스트리밍과 시각적 디자인을 지원하는 VCL 프레임워크의 유연성을 C++ 언어에서도 활용할 수 있게 되었다. VCL 컴포넌트는 실제로 C++로 작성될 수도 있지만, C++Builder 컴파일러와 링커가 델파이에서 생성된 객체 및 헤더 파일을 사용할 수 있기 때문에 궁극적으로는 델파이 상위 클래스를 상속받는다. 이는 .Net 등장 이전에 볼 수 있었던 상호 언어 호환성의 초기 사례 중 하나였다.
2. 2. C++빌더와 VCL (1997년)
C++Builder가 출시되면서, Delphi 컴파일러는 컴파일된 Delphi 언어 유닛에 대한 C++ 헤더 파일을 생성할 수 있게 되었다. 이를 통해 VCL이 가진 스트리밍 기능과 시각적으로 설계된 사용자 인터페이스(UI) 프레임워크의 유연성을 C++ 환경에서도 활용하는 것이 가능해졌다.VCL 구성 요소는 C++로도 작성할 수 있었지만, 결과적으로는 Delphi의 상위 클래스로부터 상속받는 구조를 가졌다. 이는 C++Builder의 컴파일러와 링커가 Delphi에서 생성된 객체 파일 및 헤더 파일을 사용할 수 있었기 때문에 가능했다. 이러한 방식은 .Net 프레임워크가 등장하기 이전에 시도된 초기 상호 언어 호환성의 중요한 사례 중 하나로 평가받는다.
2. 3. 현재의 VCL
C++Builder의 출시로 VCL은 Delphi뿐만 아니라 C++에서도 사용 가능하게 되었다. 이는 Delphi 언어로 컴파일된 유닛에 대한 C++ 헤더 파일을 생성함으로써 가능해졌으며, .Net 등장 이전의 초기 상호 언어 호환성 사례 중 하나로 꼽힌다.현재 VCL은 Delphi 및 C++Builder 환경 모두에서 사용할 수 있으며, 수백 개의 시각적 및 비시각적 구성 요소를 포함하고 있다.
3. 기술
VCL은 클래스 계층 구조를 이루고 있으며, 모든 클래스는 공통 조상인 TComponent 클래스를 가진다. 이 TComponent 클래스는 델파이 오브젝트 파스칼의 최상위 루트 클래스인 TObject로부터 상속받는다. 이러한 계층 구조 방식은 자바, 스몰토크, C# 등 여러 객체 지향 프로그래밍 언어에서도 흔히 사용되는 방식이다.
VCL은 다양한 종류의 컴포넌트를 포함한다. 윈도우 창을 나타내는 TForm 클래스, 버튼(TButton), 체크박스(TCheckBox), 레이블(TLabel)과 같은 일반적인 컨트롤뿐만 아니라, 데이터베이스 접근을 위한 컴포넌트(예: ADO 또는 IBX 컴포넌트)나 인터넷 연결을 위한 컴포넌트(인디 컴포넌트) 등 비시각적인 기능 컴포넌트도 제공한다.
VCL은 확장성이 뛰어나 프로그래머가 직접 만든 시각적 또는 비시각적 컴포넌트를 추가하여 사용할 수 있다. 이미 많은 개발자들이 VCL 컴포넌트를 개발하여 무료 또는 상용으로 배포하고 있으며, 대표적인 컴포넌트 패키지로는 JEDI, TMS, Developer Express, Mitov Software, Raize Software, TurboPower, IOComp, SDL, DA-SOFT Technologies 등이 있다.
VCL은 멀티 스레딩을 지원하지만, 모든 VCL 컴포넌트가 스레드 안전하게 설계된 것은 아니므로 사용 시 주의가 필요하다. 예를 들어, OpenWire VCL 라이브러리는 멀티 스레딩을 자체적으로 지원하는 기능을 내장하고 있다.
VCL은 PME(속성, 메서드, 이벤트) 모델을 .NET 수준에서 네이티브로 지원한다.
.NET의 설계, 특히 WinForms는 VCL의 영향을 많이 받았다. 델파이 초기 버전의 핵심 설계자 중 한 명이었던 안데르스 헤일스베르가 마이크로소프트로 이직하여 .NET의 핵심 설계자가 되었기 때문이다. 이 과정에서 볼랜드는 마이크로소프트가 자사의 영업 비밀을 빼내기 위해 30개월 동안 34명의 직원을 고용했으며, 고액의 이직 제안을 했다고 주장하며 소송을 제기하기도 했다. 당시 보도에 따르면 안데르스 헤일스베르의 경우 300만달러의 보너스를 제안받았다고 한다.[7] 이러한 배경 때문에 많은 델파이 개발자들은 VCL과 설계적으로 유사한 점이 많은 C#을 친숙하게 느낀다.[8]
4. 관련 프레임워크
VCL의 크로스 플랫폼 버전으로 CLX (Component Library for Cross Platform)가 있다. 이는 2000년에서 2001년 사이에 델파이, C++빌더, Kylix에서 사용하기 위해 개발되었으나, 현재는 더 이상 사용되지 않는다.
2011년에는 또 다른 크로스 플랫폼 프레임워크인 FireMonkey가 델파이와 C++빌더 XE2 버전에 통합되었다. FireMonkey는 윈도우, OS X, iOS, 안드로이드 환경에서 사용자 인터페이스(UI)를 만들기 위한 프레임워크로, 벡터 그래픽 기반이며 WPF와 유사한 특징을 가진다.
오픈 소스 Lazarus 프로젝트는 LCL(Lazarus Component Library)이라는 독자적인 크로스 플랫폼 컴포넌트 라이브러리를 개발했다. LCL은 Kylix나 CLX가 등장하기 이전부터 개발되고 있었으며, *nix, OS X, Win32/64, WinCE 등 다양한 운영체제를 지원한다. Lazarus 프로젝트는 Kylix나 FMX와는 별개로 LCL 개발을 계속 진행했다.
한편, OpenOffice.org와 이를 계승한 LibreOffice에도 'Visual Class Library' (VCL)라는 이름의 그래픽 라이브러리가 있지만, 이는 델파이나 C++빌더의 VCL과는 이름만 같을 뿐 서로 관련이 없는 기술이다.
5. .NET Framework와의 관계
.NET Framework 설계의 많은 부분, 특히 Windows Forms는 VCL을 모델로 삼았다. 델파이 초기 버전의 주요 설계자 중 한 명인 안데르스 헤일스베르는 마이크로소프트로 이직하여 .NET의 주요 설계자가 되었다. 이 과정에서 보랜드는 1996년경 마이크로소프트가 자사의 영업 비밀을 얻기 위해 지난 30개월간 34명의 보랜드 직원을 고용했으며, 거액의 인센티브를 제공했다고 주장하며 소송을 제기했다. 안데르스 헤일스베르의 경우 3백만 달러의 보너스가 지급되었다는 내용도 있다.[7] 이후 1999년 6월 8일, 당시 인프라이즈(보랜드)는 마이크로소프트에 1.25억달러를 받고 특허 사용을 허가하는 계약을 체결했다.[13]
이후 VCL의 영향을 받은 .NET Framework의 기본 클래스 라이브러리가 공개되었으며, 특히 Windows Forms는 VCL의 설계 및 개발 스타일을 강하게 계승했다. 이러한 배경 때문에 많은 델파이 개발자들은 C#의 설계가 VCL과 유사하다고 느끼며 비교적 쉽게 적응할 수 있었다.[8] 현재 .NET Framework의 기본 클래스 라이브러리는 C#과 Visual Basic .NET을 중심으로 한 윈도우 애플리케이션 개발의 주요 라이브러리가 되었고, Mono와 .NET Core를 통해 다른 플랫폼으로도 확장되고 있다.
6. 문제점
VCL은 윈도우 전용으로 개발되었기 때문에 다른 운영체제 플랫폼으로의 이식성이 없다. 또한, 델파이 자체의 사양 문제로 인해 유니코드 지원이 늦어졌으나, 델파이 2009 버전부터 유니코드 지원이 강화되었다.[14]
참조
[1]
서적
Delphi Component Design
[2]
서적
Delphi Component Design
[3]
웹사이트
Using a Designer UI File in Your Application | Qt 4.8
http://qt-project.or[...]
[4]
웹사이트
VCL Overview - RAD Studio
http://docwiki.embar[...]
[5]
서적
Delphi Component Design
[6]
웹사이트
Understanding the Component Library - RAD Studio
http://docwiki.embar[...]
[7]
웹사이트
Delphi Tutorials
http://delphi.about.[...]
[8]
웹인용
Archived copy
https://web.archive.[...]
2014-05-28
[9]
문서
[10]
문서
[11]
문서
[12]
웹사이트
System.Classes.TComponent - RAD Studio API Documentation
http://docwiki.embar[...]
[13]
웹사이트
USNews Microsoft、かつてのライバルInpriseに資本参加
https://web.archive.[...]
1999-06-09
[14]
간행물
Delphiにおける一般的なUnicodeへの移行テクニック
https://www.embarcad[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com