비주얼 베이직 닷넷
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
비주얼 베이직 닷넷(VB.NET)은 마이크로소프트의 .NET 프레임워크 또는 닷넷이 설치된 환경에서 실행되는 프로그래밍 언어이다. 2002년에 첫 출시 이후 지속적으로 발전해 왔으며, 윈도우 XP 서비스 팩 2 이상, 윈도우 서버 2003 서비스 팩 1 이상 등 다양한 운영 체제를 지원한다. 최소 하드웨어 요구 사항은 1.6 GHz CPU, 384 MB RAM, 1024×768 해상도의 화면, 5400 RPM 하드 디스크이며, 2019년에는 .NET Core에 초점을 맞춘 VB.NET 2019가 출시되었다. VB.NET은 C#과 유사한 점이 많지만, VB6과의 호환성은 낮다. VB6에서 VB.NET으로의 전환은 언어의 의미론적 변화로 인해 리팩토링이 필요하며, CIL로 컴파일되어 디컴파일이 용이하다는 특징을 가진다.
더 읽어볼만한 페이지
- 베이직 예제 코드가 있는 문서 - 비주얼 베이직 포 애플리케이션
비주얼 베이직 포 애플리케이션(VBA)은 마이크로소프트 오피스 제품군 등에서 매크로 생성 및 자동화 작업을 위해 사용되는 프로그래밍 언어로서, 여러 응용 프로그램에서 자동화 솔루션 구축, 오피스 프로그램 기능 확장, 사용자 정의 함수 제작, 다른 응용 프로그램과의 통합 등에 활용되며 보안 문제도 포함한다. - 마이크로소프트 베이직 - 비주얼 베이직
비주얼 베이직은 1991년 마이크로소프트에서 출시된 GUI 기반 응용 프로그램 개발에 강점을 가진 프로그래밍 언어이며, 윈도우용 응용 프로그램 및 데이터베이스 조작 프로그램 개발에 주로 사용되었고, 2005년 표준 지원이 중단되었다. - 마이크로소프트 베이직 - 알테어 베이직
알테어 베이직은 빌 게이츠와 폴 앨런이 알테어 8800 컴퓨터를 위해 개발한 BASIC 인터프리터로, 마이크로소프트의 초기 성공에 기여하고 소프트웨어 저작권 논쟁을 촉발했으며 MS-DOS로 전환될 때까지 핵심 사업으로 남았다. - 2001년 도입 - 게임보이 어드밴스
게임보이 어드밴스는 닌텐도에서 출시한 휴대용 게임기로 슈퍼 패미컴을 능가하는 성능과 게임보이 시리즈와의 하위 호환성을 제공하며, 전 세계적으로 많은 판매고를 올린 인기 기종이다. - 2001년 도입 - 닌텐도 게임큐브
닌텐도 게임큐브는 닌텐도가 2001년에 출시한 가정용 게임기로, 닌텐도 자사 게임기로는 처음으로 광 디스크를 채용하여 DVD 기반의 8cm 디스크를 사용하며 IBM, ATI 등과 협력 개발, 200만대 이상 판매 후 Wii로 후속 기종이 출시되었다.
비주얼 베이직 닷넷 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
개발자 | 마이크로소프트 |
설계자 | 마이크로소프트 |
출시 연도 | 2001년 |
최신 버전 | 2019 (16.9) |
최신 버전 출시일 | 2021년 3월 2일 |
파일 확장자 | .vb |
기술 정보 | |
자료형 체계 | 강한 정적 자료형 또는 동적 자료형 |
처리계 | .NET Framework .NET (.NET Core) Roslyn 컴파일러 Mono |
플랫폼 | .NET Framework: 마이크로소프트 윈도우 |
패러다임 | 구조적 프로그래밍 명령형 프로그래밍 객체 지향 프로그래밍 선언형 프로그래밍 |
영향 | |
영향을 받은 언어 | Visual Basic, C# |
영향을 준 언어 | Small Basic |
기타 | |
방언 | .NET 2002 (7.0), .NET 2003 (7.1), 2005 (8.0), 2008 (9.0), 2010 (10.0), 2012 (11.0), 2013 (12.0), 2015 (14.0), 2017 (15.x), 2019 (16.x) |
웹사이트 | Visual Basic 공식 웹사이트 |
2. 지원 운영체제 및 하드웨어 요구사항
VB.NET으로 개발된 응용 프로그램은 .NET 프레임워크 또는 .NET이 설치된 윈도우 환경에서 실행 가능하다.
2. 1. 지원 운영 체제
- 윈도우 XP 서비스 팩 2 이상 (2010 출시는 서비스 팩 3)
- 윈도우 서버 2003 서비스 팩 1 이상
- 윈도우 서버 2003 R2 이상
- 윈도우 비스타
- 윈도우 서버 2008
- 윈도우 7
- 윈도우 서버 2008 R2 이상 (최신 버전의 닷넷 지원)
2. 2. 하드웨어 요구사항
구분 | CPU | RAM | 화면 해상도 | 하드 디스크 |
---|---|---|---|---|
최소 | 1.6 GHz | 384 MB | 1024×768 | 5400 RPM |
권장 | 2.2 GHz 이상 | 1024 MB 이상 | 1280×1024 | 7200 RPM 이상 |
VB.NET은 2002년 첫 출시 이후 지속적으로 발전해왔다. 다음은 VB.NET의 주요 버전별 특징이다.
3. 버전
제품명 버전 내부 버전 출시년도 비고 Visual Basic .NET 7.0 2002년 언어 사양의 대폭 변경 (완전한 객체 지향). 실행 환경에 .NET Framework 1.0 채용. 7.1 2003년 .NET Framework 1.1에 대응. Visual Basic 2005 8.0 2005년 .NET Framework 2.0에 대응. Visual Basic 2008 9.0 2007년 LINQ나 람다식 도입 등 언어 기능을 강화. .NET Framework 3.5에 대응. Visual Basic 2010 10.0 2010년 .NET Framework 4.0에 대응. Visual Basic 2012 11.0 2012년 .NET Framework 4.5에 대응. Async/Await 도입. Visual Basic 2013 12.0 2013년 .NET Framework 4.5.1에 대응. Visual Basic 2015 14.0 2015년 .NET Framework 4.6에 대응. Visual Basic 2017 15.0, 15.3, 15.5, 15.8 2017년 Visual Basic 2019 16.0 2019년 .NET Core 대응에 중점을 둠.
7.x 버전에 한해 "Visual Basic .NET"이라고 불렸지만, "Visual Basic"으로 명칭이 변경된 8.0 이후에도 VB.NET 계열이다. `Microsoft.VisualBasic.dll`, vbc.exe, Visual Studio IDE의 버전 정보에서 볼 수 있듯이, '''제품 버전 및 내부 버전은 Visual Studio와 동일한 버전 번호가 할당되어 있다'''. 내부 버전 13은 기피 숫자이므로 건너뛰었다.
3. 1. 비주얼 베이직 닷넷 2002 (VB 7.0)
2002년에 마이크로소프트는 비주얼 베이직을 기반으로 한 새로운 객체 지향 프로그래밍 언어인 비주얼 베이직 닷넷(Visual Basic .NET)을 출시했다. 이는 마이크로소프트의 새로운 기술 기반인 .NET Framework 1.0을 기반으로 한다.[39]
VB.NET의 가장 중요한 특징은 관리 코드로 실행된다는 점이다. 이를 통해 이전 버전의 비주얼 베이직과는 다른, 본격적인 객체 지향 프로그래밍이 가능해졌다.
VB.NET은 웹 서버용 프로그램 및 웹용 프로그램 개발 기능을 추가하여 네트워크 개발 기능을 강화했다. 또한, 디버깅 기능이 향상되었고, 중간 코드 형식을 채택하는 등 언어 설계 자체가 변경되면서 기능이 크게 추가되거나 삭제되었다. 다만, VB6에서 지원되던 에디트 & 컨티뉴 기능은 VB.NET에서 제거되었다.[39]
3. 2. 비주얼 베이직 닷넷 2003 (VB 7.1)
2003년에 닷넷 프레임워크 1.1 기반으로 출시되었다. 닷넷 컴팩트 프레임워크를 지원하며, VB 업그레이드 마법사가 개선되었다.[9] 또한 닷넷 IDE (특히 배경 컴파일러)와 런타임의 신뢰성이 개선되었다. '비주얼 스튜디오 닷넷 아카데믹 버전'(VS03AE)으로 각 나라에서 일정한 수의 학자들에게 비용 없이 배포되었다.
3. 3. 비주얼 베이직 2005 (VB 8.0)
비주얼 베이직 2005는 비주얼 베이직 닷넷의 업데이트 버전으로, 2005년에 출시되었다. 마이크로소프트는 이 버전부터 제목에 '.NET'을 붙이지 않기로 결정하였다.
이 버전에는 다음과 같은 기능들이 추가되었다.
이러한 기능들은 고속 응용 프로그램 개발 플랫폼으로서 비주얼 베이직 닷넷의 집중을 강화하고 C#와의 차별화를 꾀하기 위한 것이었다.
또한, 비주얼 베이직 2005는 다른 .NET 언어들과의 차이를 줄이기 위해 다음과 같은 기능들을 추가했다.
비주얼 베이직 2005의 또 다른 특징은 `IsNot` 연산자이다. `If Not X is Y`를 `If X IsNot Y`와 동일하게 만드는 연산자로, 마이크로소프트가 특허 응용 프로그램으로 발표했을 때 논란이 있었다.[18][19][20]
제품 이름에서는 ".NET"이라는 이름이 없어졌지만, VB.NET과 연속성이 있는 언어이다. 언어 사양이 강화되어 C# 2.0과 마찬가지로 제네릭 요소가 도입되었으며, 부분 클래스 및 연산자 오버로드 등이 지원되었다. 또한, 개발 환경도 크게 강화되었다.
대응하는 .NET 버전은 .NET Framework 2.0이지만, Visual Studio용 확장을 설치하면 .NET Framework 3.0 대응 애플리케이션 개발도 가능해진다.
3. 4. 비주얼 베이직 2008 (VB 9.0)
비주얼 베이직 9.0은 2007년 11월 19일에 마이크로소프트 닷넷 프레임워크 3.5와 함께 출시되었다.[9]
이 버전에서 마이크로소프트는 다음과 같은 많은 기능을 추가하였다:[9]
C# 3.0과 함께 출시되어 언어 사양이 강화되었으며, LINQ, 람다식, 익명 형식 등이 추가되었다. 대응하는 .NET 버전은 .NET Framework 3.5이다. (.NET 3.5는 3.0 및 2.0의 완전한 상위 집합이므로 3.0 및 2.0 애플리케이션 개발도 가능하다).
3. 5. 비주얼 베이직 2010 (VB 10.0)
2010년 4월, 마이크로소프트는 비주얼 베이직 2010을 출시했다.[68] 마이크로소프트는 이번 버전에 동적 언어 런타임(DLR)을 사용하기로 결정했지만, 비주얼 베이직과 자매 언어 C# 사이의 동등성을 높이기 위해 공동 진화 전략으로 변경되었다.[69] CLR과 COM 개체와 동적 상호 작용하는 비주얼 베이직의 타고난 능력은 IronPython과 IronRuby 같은 DLR에 빌드된 동적 언어와 작동하도록 향상되었다.[69] 비주얼 베이직 컴파일러는 대부분의 경우에 줄 연결 문자 '_'의 필요성을 없애고 일반적인 콘텍스트의 집합에서 행 연속으로 추정하도록 개선되었다. 또한 기존 인라인 함수 지원은 Sub와 함수 람다의 여러 줄 버전뿐만 아니라 인라인 Sub에 대한 지원을 포함하게 되었다.[70]
대응하는 .NET 버전은 .NET Framework 4.0이다 (3.5, 3.0, 2.0에서의 개발도 가능).
C#의 언어 설계자로 알려진 안데르스 헤일스베르그가 설계에 참여하여 VB와 C# 간의 언어 격차를 줄이는 방향으로 개선되었다.[54] [55]
3. 6. 비주얼 베이직 2012 (VB 11.0)
.NET Framework 4.5와 함께 출시되었다. 이 버전에서 도입된 주요 기능은 다음과 같다.
C# 5.0과 마찬가지로, 비동기 프로그래밍을 언어 사양 수준에서 지원하는 Async/Await 구문을 도입했다.[9]
3. 7. 비주얼 베이직 2013 (VB 12.0)
Visual Basic 2013은 마이크로소프트 Visual Studio 2013과 함께 출시되었으며, .NET 프레임워크 4.5.1을 기반으로 한다. Developer Pack을 설치하면 .NET 프레임워크 4.5.2 기반 애플리케이션도 개발할 수 있다.[24][56]
3. 8. 비주얼 베이직 2015 (VB 14.0)
Visual Basic 2015 (코드명 VB "14.0")는 비주얼 스튜디오 2015와 함께 출시되었다.[25] 2015년에 .NET Framework 4.6과 함께 공개되었으며, Roslyn(로슬린) 컴파일러 레이어를 통해 Visual C#과 동등한 IDE 기능을 갖추게 되었다.[57]
VB 14의 주요 신기능은 다음과 같다.
3. 9. 비주얼 베이직 2017 (VB 15.x)
Visual Studio 2017과 함께 비주얼 베이직 2017 (코드명 VB "15.0")이 출시되었다.[58] 15.3, 15.5, 15.8 등의 개정판을 통해 새로운 Visual Basic 15 언어 기능이 지원된다. 소스 코드를 한 번에 정리할 수 있는 새로운 리팩토링 기능이 도입되었다.[58]
3. 10. 비주얼 베이직 2019 (VB 16.0)
Visual Studio 2019와 함께 출시된 Visual Basic 2019 (코드명 VB "16.0")는 닷넷 코어(.NET Core)에 초점을 맞춘 최초의 Visual Basic 버전이다.[28][29]
4. 구문 (Syntax)
VB.NET은 C++, Java, C# 등 C 계열 언어에 비해 문법이 자연어와 비슷하여, 프로그래밍 초보자도 비교적 쉽게 배우고 사용할 수 있다고 알려져 있다.[39] 그러나 초보자만을 위한 언어는 아니며, 본격적인 소프트웨어 개발에도 사용될 수 있다.
VB.NET 컴파일러는 마이크로소프트에서 무료로 제공하며, 통합 개발 환경을 사용하면 더욱 편리하게 개발할 수 있다. 과거에는 유료였지만, 현재는 기능 제한이 있는 Express 에디션이나 Community 에디션이 무료로 제공된다.
4. 1. 기본 구문
식(expression) 구문은 단일 줄에서 평가되며, 이 과정에서 서브루틴을 호출하거나 변수에 새로운 값을 할당할 수 있다. 비주얼 베이직은 예약된 키워드를 사용하여 여러 제어 흐름 구문을 제공하며, 순차적 실행을 수정할 수 있다. 구조적 프로그래밍은 조건부 실행 구문(If
... Then
... Else
... End If
및 Select Case
... Case
... End Select
)과 반복 실행(루프) 구문(Do
... Loop
, For
... To
, For Each
및 While
... End While
)을 지원한다. For
... To
구문은 초기화 및 테스트 섹션이 별도로 존재하며, 둘 다 필수적이다. For Each
구문은 목록의 각 값을 단계별로 처리한다.[5]비주얼 베이직의 특징은 다음과 같다.
- 코드 블록은 "If … Then" 또는 "Sub"와 같은 키워드로 시작하고, "End If" 또는 "End Sub"와 같은 종료 키워드로 끝난다.
- 문(statement)은 콜론(":") 또는 줄 바꿈으로 종료된다. 여러 줄 구문은 각 줄 끝에 " _"를 사용하여 활성화할 수 있지만, 버전 10 이후에는 이 필요성이 크게 줄었다.[5]
- 등호("=")는 변수 할당과 비교에 모두 사용된다.
- 괄호는 배열 선언 및 사용, 서브루틴/함수 매개변수 정의에 사용된다.
- 작은따옴표(') 또는
REM
키워드를 사용하여 주석(comment)을 처리한다. 주석은 줄의 시작 부분, 공백/탭 문자 뒤, 또는 코드 뒤에 올 수 있다.
4. 2. 코드 예제
vbnetModule Module1
Sub Main()
Console.WriteLine("Hello, World!")
End Sub
End Module
```
위 코드는 콘솔에 "Hello, World!"를 출력하는 가장 간단한 비주얼 베이직 닷넷 프로그램이다. `Module1`은 코드를 담는 컨테이너 역할을 하며, `Sub Main()`은 프로그램 실행의 시작점이다.[76][77] `Console.WriteLine`은 지정된 텍스트를 콘솔에 출력하는 명령어이다.[78]
```vbnet
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox("Hello world!", MsgBoxStyle.Information, "Hello world!")
End Sub
End Class
```
위 코드는 버튼을 클릭하면 "Hello world!" 메시지 상자를 표시하는 윈도우 폼 응용 프로그램 예제이다. `Form1`은 창을 나타내며, `Button1_Click`은 `Button1`이라는 버튼이 클릭될 때 실행되는 코드 블록(서브루틴)이다. `MsgBox`는 메시지 상자를 표시하는 함수이다.
```vbnet
Imports System.Console
Module Program
Sub Main()
Dim rows As Integer
' 입력 유효성 검사.
Do Until Integer.TryParse(ReadLine("표시할 행의 개수를 입력하세요: "), rows) AndAlso rows >= 1
WriteLine("허용되는 범위는 1과 {0}입니다", Integer.MaxValue)
Loop
' 플로이드의 삼각형 출력
Dim current As Integer = 1
For row = 1 To rows
For column = 1 To row
Write("{0,-2} ", current)
current += 1
Next
WriteLine()
Next
End Sub
'''
''' Console.ReadLine과 유사하지만 프롬프트 문자열을 사용합니다.
'''
Function ReadLine(Optional prompt As String = Nothing) As String
If prompt IsNot Nothing Then
Write(prompt)
End If
Return Console.ReadLine()
End Function
End Module
```
이 코드는 사용자로부터 입력받은 행의 개수만큼 플로이드의 삼각형을 콘솔에 출력하는 예제이다. `Do Until` 반복문은 사용자가 유효한 값을 입력할 때까지 반복하고, `For` 반복문은 각 행과 열을 순회하며 숫자를 출력한다. `ReadLine` 함수는 사용자에게 프롬프트를 표시하고 입력을 받는 별도로 정의된 함수이다.
5. 비주얼 베이직 이전 버전(VB6)과의 관계
비주얼 베이직 닷넷(VB.NET)은 이전 버전인 비주얼 베이직 6(VB6)과 여러 면에서 차이가 있어, 완전히 다른 언어로 봐야 하는지에 대한 논쟁이 있다. VB.NET은 닷넷 프레임워크 기반의 객체 지향 언어로, VB6의 COM 기반 객체 기반 프로그래밍과는 다른 의미론을 가진다.
VB.NET으로 전환되면서 데이터 형식, 의미론, 클래스 라이브러리 등에서 큰 변화가 있었다. VB6의 `Integer`는 16비트였지만 VB.NET에서는 32비트이며, `Long`은 32비트에서 64비트로 변경되었다. 16비트 정수는 `Short`로 인식된다.[71] VB.NET은 공용 언어 런타임(JIT 컴파일 엔진과 세대 쓰레기 수집을 사용하는 가상 머신)과 더 큰 클래스 라이브러리로 구성된 .NET 프레임워크를 기반으로 한다.[9]
이러한 변화로 인해 VB6에서 VB.NET으로 코드를 이전하는 것은 쉽지 않다. 마이크로소프트는 업그레이드 마법사와 호환성 라이브러리를 제공하여 이전 작업을 돕지만, VB.NET의 새로운 기능을 최대한 활용하려면 리팩토링이 필요하다.[9] 또한, VB.NET에서는 Windows Forms 또는 WPF를 GUI 프레임워크로 사용할 수 있으며, 이에 따라 `MessageBox` 클래스가 속한 네임스페이스가 달라지는 등 세부적인 차이점도 존재한다.
하지만 윈도 폼 GUI 편집기는 스타일과 기능 면에서 VB6의 양식 편집기와 매우 유사하며,[71] 구조적 예외 처리 및 단락식 표현과 같은 새로운 기능이 추가되었지만 언어의 기본 문법은 크게 바뀌지 않았다. 이러한 점 때문에 VB.NET을 VB의 다른 버전으로 보는 시각도 있다.
2000년대 초, 마이크로소프트의 ".NET 구상"을 실현하기 위한 응용 프로그램 개발 및 실행 환경 ".NET Framework"에 대응하는 프로그래밍 언어로서, C#과 함께 VB.NET이 등장했다[39]。
C++, Java, C# 등 C 계열 언어에 비해 VB/VB.NET은 문법이 자연 언어에 가까운 편이다. 하지만 초보자용 언어라는 것은 아니며, 본격적인 소프트웨어 개발에도 사용할 수 있다.
5. 1. 주요 변경 사항
비주얼 베이직 닷넷(VB.NET)으로 전환되면서 여러 중요한 변화가 있었다. 데이터 형식에서 `Integer`는 16비트에서 32비트로, `Long`은 32비트에서 64비트로 길이가 두 배가 되었다. 16비트 정수는 이제 `Short`로 인식된다. 윈도 폼 GUI 편집기는 비주얼 베이직 양식 편집기와 스타일 및 기능이 매우 유사하다.[71]가장 큰 변화는 의미론이다. 비주얼 베이직은 COM 기반의 결정론적 참조횟수 계산 엔진에서 실행되는 객체 기반 프로그래밍 언어였지만, VB.NET은 .NET 프레임워크를 기반으로 하는 완전한 객체 지향 언어가 되었다. .NET 프레임워크는 공용 언어 런타임(JIT 컴파일 엔진과 세대 쓰레기 수집을 사용하는 가상 머신)과 더 큰 클래스 라이브러리로 구성된다.[9]
이러한 변화로 인해 성능 및 유지보수와 관련된 많은 기본 가정이 바뀌었다. 일부 기능과 라이브러리는 더 이상 존재하지 않으며, 나머지는 .NET의 대안만큼 효율적이지 않다. 변환된 VB6 애플리케이션은 새로운 언어를 최대한 활용하기 위해 리팩토링이 필요하다.[9]
VB.NET에서는 Windows Forms 또는 WPF를 GUI 프레임워크로 사용할 수 있으며, 이에 따라 `MessageBox` 클래스가 속한 네임스페이스가 달라진다.
VB6에서는 클래스 모듈 정의, 멤버 변수/메서드 캡슐화, 인터페이스 구현에 따른 다형성을 지원했지만, 클래스 상속은 지원하지 않아 완전한 객체 지향 프로그래밍을 지원한다고 보기 어려웠다. VB.NET에서는 클래스 상속이 지원되어 본격적인 객체 지향 언어가 되었다.
VB6에서는 고유 구문으로 폼 제어 및 문자열 조작을 프로그래밍했지만, VB.NET에서는 C# 등과 공통으로 사용되는 .NET Framework 표준 라이브러리에 따른 프로그래밍이 필요하다.
VB6에서는 `On Error GoTo` 문을 사용하여 오류 처리를 했지만, VB.NET에서는 `Try - Catch - Finally`를 이용한 예외 처리를 사용할 수 있다.
다른 .NET 언어와의 호환성을 위해 고정 길이 문자열은 더 이상 지원되지 않는다. `Microsoft.VisualBasic.Compatibility.VB6.FixedLengthString` 클래스가 제공되지만, 멀티바이트 문자에 대해서는 정상적으로 동작하지 않을 수 있다.[52][53]
5. 2. 호환성
VB6와의 호환성은 낮지만, VB.NET은 업그레이드 마법사와 호환성 라이브러리를 제공한다. `Microsoft.VisualBasic.Compatibility.VB6` 네임스페이스는 VB 6.0 자동 업그레이드 도구용으로 제공되지만 제한적으로 사용된다.[42][50][51]VB.NET에서는 GUI 프레임워크에 Windows Forms를 사용할지, 아니면 WPF를 사용할지에 따라 사용할 수 있는 `MessageBox` 클래스가 속한 네임스페이스가 달라진다.
구 VB나 VBScript[48][49]에 구현되어 있던 구 `MsgBox` 함수 등의 호환 기능은 라이브러리에서 지원하지만,[42][50][51] `()`를 사용한 메서드 호출 형태로 작성해야 한다.
```vbnet
Imports Microsoft.VisualBasic.Compatibility ' 파일 머리에 작성한다.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Hello, World")
End Sub
```
VB6에서는 고유의 구문으로 폼 제어 및 문자열 조작을 프로그래밍했지만, VB.NET에서는 C# 등과 공통으로 사용되는 .NET Framework의 표준 라이브러리에 따른 프로그래밍이 필요하게 되었다.
5. 3. 코드 비교 예제
다음은 VB.NET 코드 예제이다.```vbnet
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show("Hello, World")
End Sub
```
VB.NET에서는 윈도우 폼을 사용할지, WPF를 사용할지에 따라 사용할 수 있는 `MessageBox` 클래스가 속한 네임스페이스가 달라진다.[48][49]
VBScript[42][50][51] 등에 구현되어 있던 `MsgBox` 함수는 호환성 라이브러리를 통해 지원되지만, 다음과 같이 `()`를 사용한 메서드 호출 형태로 작성해야 한다.
```vbnet
Imports Microsoft.VisualBasic.Compatibility ' 파일 머리에 작성한다.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Hello, World")
End Sub
```
다음은 VB6 코드 예제이다.
```vb
Private Sub Command1_Click()
MsgBox "Hello, World"
End Sub
```
VB6에서는 `MsgBox` 함수를 직접 호출할 수 있다.
윈도우 폼 닫기 예제 (VB6, VB.NET)VB6 예제:
```vb
Sub cmdClose_Click()
Unload Me
End Sub
```
VB.NET 예제:
```vbnet
Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
Close()
End Sub
```
연산자 단축키 사용 예제 (VB6, VB.NET)VB6에서는 연산자 단축키를 지원하지 않는다.
VB6 예제:
```vb
Sub Timer1_Timer()
Me.Height = Me.Height - 1
End Sub
```
VB.NET에서는 연산자 단축키를 지원한다.
```vbnet
Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Me.Height -= 1
End Sub
6. C#과의 비교
C#과 비주얼 베이직 닷넷(VB.NET)은 마이크로소프트가 .NET Framework에서 프로그래밍하기 위해 만든 최초의 언어들입니다. (이후 F# 등이 추가되었습니다.) 두 언어는 구문적으로 다르지만, 대부분의 차이점은 거기에서 끝납니다.[11]
마이크로소프트는 이 두 언어를 동일한 .NET Framework 개발 플랫폼의 일부로 개발했습니다. 둘 다 마이크로소프트의 동일한 언어 개발 팀에서 개발, 관리 및 지원합니다.[11] 두 언어는 동일한 중간 언어(IL)로 컴파일되며, 동일한 .NET Framework 런타임 라이브러리에 대해 실행됩니다.[12] 프로그래밍 구조에 약간의 차이점이 있지만, 그 차이점은 주로 구문적이며, Visual Basic 6에서 변환을 돕기 위해 마이크로소프트가 제공하는 Visual Basic "호환성" 라이브러리를 피하는 경우 VB.NET의 거의 모든 기능은 C#에서 동등한 기능을 가지며 그 반대도 마찬가지입니다. 두 언어 모두 .NET Framework의 동일한 기본 클래스를 참조하여 기능을 확장합니다.
결과적으로, 몇 가지 예외를 제외하고 두 언어 중 하나로 작성된 프로그램은 간단한 구문 변환기를 통해 다른 언어로 변환하여 실행할 수 있습니다. 이 작업을 위한 많은 오픈 소스 및 상용 제품이 있습니다.
VB.NET은 C++, Java, C# 등 C 계열 언어에 비해 문법이 자연 언어에 가까워, 프로그래밍 초보자도 비교적 쉽게 배우고 사용할 수 있다고 알려져 있습니다. 하지만 초보자용 언어라는 것은 아니며, 본격적인 소프트웨어 개발에도 사용할 수 있습니다.
VB.NET 컴파일러가 출력하는 코드는 Visual C# 등과 마찬가지로 CIL라고 불리는 중간 표현이며, 다른 .NET 언어와 비교하여 속도는 손색이 없습니다. CIL은 실행 시 JIT 컴파일러에 의해 최적화된 네이티브 코드로 변환됩니다.
7. 비평
마이크로소프트가 더 이상 판매하지 않는 VB6 사용자들은 VB.NET 초기 버전에 대해 언어 구조 및 사용자 인터페이스 기능이 대폭 축소되고 VB6의 의미론이 변경된 점 등에 대해 오랫동안 불만을 제기했다. 예를 들어, VB.NET 매개 변수는 기본적으로 참조가 아니라 값에 의해 전달된다. 비판자들은 VB.NET을 '비주얼 프레드' 또는 'DOTNOT'[72]처럼 경멸적으로 부르기도 했다. 2005년 3월 8일, 마이크로소프트가 VB6에 대한 주요 지원[73]을 확장하는 것을 거절한 데 대한 대응으로 청원[74]이 제기되기도 했다.
VB.NET의 지지자들은 새로운 언어가 대부분의 측면에서 이전 버전보다 더 강력하며, 초기 버전보다 자연스럽고, 일관되며, 완전한 방식으로 현대적인 객체 지향 프로그래밍 패러다임을 통합한다고 평가한다. 반면 VB6은 자체 개체 모델에 결함은 있지만, VB.NET으로 변환하여 얻을 수 있는 모든 혜택에 비해 재개발 비용이 너무 높다는 반박도 있다.
VB.NET을 포함한 공통 중간 언어(CIL)를 대상으로 한 언어는 기계 코드로 컴파일되는 언어에 비해 디컴파일하기 쉽다. .NET 리플렉터와 같은 도구는 CIL에서 제공하는 메타데이터가 많기 때문에 원래 코드에 가까운 결과물을 제공한다.
VB.NET 프로그램은 런타임을 위해 닷넷 프레임워크 설치가 필요하다. VB6 프로그램에 필요한 런타임 라이브러리는 윈도우 98 SE 이상에 기본 제공된다. 닷넷 프레임워크는 윈도우 7, 윈도우 비스타, 윈도우 XP 미디어 센터 에디션, 윈도우 XP 태블릿 PC 에디션, 윈도우 서버 2008, 윈도우 서버 2003에 포함되었으며, 윈도우 2000 또는 윈도우 XP (홈 또는 프로페셔널 에디션)에는 별도로 설치해야 한다.
마이크로소프트는 개발자 불만족에 대응하여 VB6에서 VB.NET으로 쉽게 이동하고 기존 코드베이스를 변환할 수 있도록 최신 코드 예제와 문서를 [http://msdn.microsoft.com/VBRun/ VB런 웹사이트]에서 제공한다.
8. 크로스 플랫폼 및 오픈 소스 개발
VB.NET 개발을 위한 오픈 소스 도구의 탄생은 모노 개발 플랫폼이 윈도 폼 GUI 라이브러리와 같은 표준 프레임워크 라이브러리뿐만 아니라, VB.NET 라이브러리 및 VB.NET에서 작성된 VB.NET 8.0 호환 컴파일러의 구현[75]을 제공함에도 불구하고 C#에 비해 느리다.
샤프디벨롭과 모노디벨롭은 오픈 소스 대안 IDE이다. 공식 비주얼 베이직 컴파일러는 비주얼 베이직으로 작성되었으며, .NET 컴파일러 플랫폼의 일부로 GitHub에서 이용할 수 있다.[30] 비주얼 베이직 개발을 위한 오픈 소스 도구의 개발은 C#에 비해 더디게 진행되었지만, Mono 개발 플랫폼은 비주얼 베이직 전용 라이브러리와 비주얼 베이직 2005와 호환되는 비주얼 베이직으로 작성된 컴파일러[31]뿐만 아니라 Windows Forms GUI 라이브러리와 같은 표준 프레임워크 라이브러리도 제공한다.
MonoDevelop은 오픈 소스 소프트웨어 기반의 대체 통합 개발 환경이었다. Gambas 환경 또한 비주얼 베이직과 유사하지만 다르며, FreeBasic용 Visual FB Editor도 마찬가지이다.
9. DirectX 지원 (일본어판 추가)
DirectX는 Direct3D 등 멀티미디어 컴포넌트를 포함하는데, C#이나 VB.NET 등 .NET 언어에서 DirectX 9를 조작하기 위한 .NET 매니지드 라이브러리인 "Managed DirectX"가 DirectX SDK 및 DirectX 엔드 유저 런타임에 동봉되는 형태로 제공되었다. XNA의 릴리스와 함께 Managed DirectX의 업데이트는 종료되었지만, XNA 역시 업데이트가 종료되었다.[1] "Windows API Code Pack for Microsoft .NET Framework"는 Windows API 및 DirectX를 포함하는 COM 컴포넌트의 .NET용 래퍼 라이브러리이다. 오픈 소스로 개발·공개되고 있는 SlimDX 라이브러리나 SharpDX 라이브러리 등을 사용하면 .NET 언어에서도 DirectX 9/10/11/12를 이용할 수 있지만, 이들 역시 업데이트가 중단되어, 그 후에 추가된 최신 기능을 이용할 수 없다.[1]
C++/CLI 등 글루 언어를 통해 독자적인 래퍼를 명시적으로 작성하여 .NET 언어에서 DirectX를 간접적으로 이용하는 것도 가능하다.[1] Windows 런타임 환경이라면, C++/CX|C++/CX영어나 C++/WinRT|C++/WinRT영어를 사용하여 랩하는 방법도 있다.[1]
참조
[1]
웹사이트
Visual Basic in .NET Core 3.0
https://blogs.msdn.m[...]
2018-11-21
[2]
웹사이트
Visual Basic support planned for .NET 5.0 | Visual Basic Blog
https://devblogs.mic[...]
Blogs.msdn.microsoft.com
2020-08-26
[3]
웹사이트
Dotnet/Roslyn
https://github.com/d[...]
2024-11-26
[4]
웹사이트
Visual Basic language strategy - Visual Basic
https://learn.micros[...]
2023-03-31
[5]
웹사이트
New Features in Visual Basic 10
https://msdn.microso[...]
2015-09-05
[6]
웹사이트
Module Statement
http://msdn.microsof[...]
MSDN – Developer Center
2010-01-20
[7]
웹사이트
Main Procedure in Visual Basic
http://msdn.microsof[...]
MSDN – Developer Center
2010-01-20
[8]
웹사이트
Visual Basic Version of Hello, World
http://msdn.microsof[...]
MSDN – Developer Center
2010-01-20
[9]
웹사이트
Microsoft Visual Basic 6.0 Migration Resource Center
http://msdn.microsof[...]
Microsoft
2014-11-09
[10]
웹사이트
Visual Studio 2003 Retired Technical documentation
https://www.microsof[...]
2018-07-24
[11]
웹사이트
Microsoft converging programming languages | Developer World
https://archive.toda[...]
InfoWorld
2013-08-18
[12]
웹사이트
Microsoft Intermediate Language
http://www.dotnet-gu[...]
Dotnet-guide.com
2013-08-18
[13]
웹사이트
Navigate The .NET Framework And Your Projects With The My Namespace
http://msdn.microsof[...]
Microsoft
2014-02-06
[14]
웹사이트
My.Internals: Examining the Visual Basic My Feature
http://msdn.microsof[...]
Microsoft
2014-02-06
[15]
웹사이트
What's New with the Visual Basic Upgrade Wizard in Visual Basic 2005
http://msdn2.microso[...]
2008-01-29
[16]
웹사이트
Defining and Using Generics in Visual Basic 2005
http://msdn2.microso[...]
2008-01-29
[17]
웹사이트
Operator Overloading in Visual Basic 2005
http://msdn2.microso[...]
2008-01-29
[18]
웹사이트
Real Software slams MS IsNot patent application
https://www.theregis[...]
The Register
2009-04-06
[19]
웹사이트
Real Software Slams Microsofts Patent Effort
https://archive.toda[...]
eWeek
2009-04-06
[20]
웹사이트
United States Patent Application: 20040230959
http://appft1.uspto.[...]
US Patent & Trademark Office
2009-04-06
[21]
웹사이트
What the heck is "VBx"?
https://web.archive.[...]
2009-08-12
[22]
웹사이트
What is New in Visual Basic 2010
http://msdn.microsof[...]
Microsoft
2009-08-12
[23]
웹사이트
What's New in Visual Basic 2010
http://msdn.microsof[...]
Microsoft
2010-08-01
[24]
웹사이트
Download Microsoft .NET Framework 4.5.2 Developer Pack for Windows Vista SP2, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2008 SP2 Windows Server 2008 R2 SP1, Windows Server 2012 and Windows Server 2012 R2 from Official Microsoft Download Center
http://www.microsoft[...]
2020-01-11
[25]
웹사이트
New Language Features in Visual Basic 14
http://blogs.msdn.co[...]
2015-02-05
[26]
웹사이트
Visual Studio 2017 Release Notes
https://www.visualst[...]
2017-04-05
[27]
웹사이트
What's new for Visual Basic 2017,15.3,15.5,15.8
https://docs.microso[...]
2020-01-11
[28]
웹사이트
Visual Studio 2019 Release Notes
https://docs.microso[...]
2019-08-02
[29]
웹사이트
What's new for Visual Basic 16.0
https://docs.microso[...]
2020-01-11
[30]
웹사이트
Roslyn
https://github.com/d[...]
.NET Foundation
2019-04-14
[31]
웹사이트
Redirecting…
http://www.mono-proj[...]
2008-06-30
[32]
웹사이트
Option Explicit and Option Strict in Visual Basic .NET and in Visual Basic
https://support.micr[...]
Microsoft
2013-08-22
[33]
웹사이트
License.txt in the Roslyn repo at 0d04884
https://github.com/d[...]
2024-11-26
[34]
문서
VB .NET プログラミングリファレンス - はしがき | Microsoft Learn
https://learn.micros[...]
[35]
문서
What's new - Visual Basic | Microsoft Learn
https://learn.micros[...]
[36]
웹사이트
Visual Studio 2019 version 16.9 Release Notes | Microsoft Learn
https://learn.micros[...]
[37]
웹사이트
Option Strict Statement - Visual Basic | Microsoft Learn
https://learn.micros[...]
[38]
웹사이트
Visual Basic | MSDN ライブラリ
https://web.archive.[...]
[39]
웹사이트
VB2005は.NETへの移行を加速できるのか!?(1/2) - @IT
https://atmarkit.itm[...]
[40]
웹사이트
VB 6.0 ユーザーのための VB .NET 移行ガイド - アップグレードウィザードの利用 | Microsoft Learn
https://learn.micros[...]
[41]
웹사이트
ITレポート(動向/解説) - 【速報】これがニューVBだ!:ITpro
https://xtech.nikkei[...]
[42]
웹사이트
Visual Basic 6.0 互換性ライブラリ | Microsoft Learn
https://learn.micros[...]
[43]
웹사이트
Microsoft.VisualBasic.Compatibility.VB6.
[44]
웹사이트
.NET Core 2.0 Previewリリース、Visual Basicをサポート
https://www.infoq.co[...]
[45]
웹사이트
"What's new in .NET Core 2.0 | Microsoft Learn"
https://learn.micros[...]
[46]
웹사이트
Visual Basic support planned for .NET 5.0 - Visual Basic Blog
https://devblogs.mic[...]
[47]
웹사이트
Update to the .NET language strategy - .NET Blog
https://devblogs.mic[...]
[48]
웹사이트
MsgBox 関数 | Microsoft Learn
https://learn.micros[...]
[49]
웹사이트
バージョン情報 (VBScript) | Microsoft Learn
https://learn.micros[...]
[50]
웹사이트
MsgBox 関数 (Visual Basic) | Microsoft Learn
https://learn.micros[...]
[51]
웹사이트
第6回 VB開発者が最新.NET Frameworkを効率よく習得する方法 - @IT
https://atmarkit.itm[...]
[52]
웹사이트
VB 6.0 ユーザーのための VB .NET 移行ガイド - 固定長文字列 | Microsoft Learn
https://learn.micros[...]
[53]
웹사이트
FixedLengthString Class (Microsoft.VisualBasic.Compatibility.VB6) | Microsoft Learn
https://learn.micros[...]
[54]
웹사이트
Visual Basic 2010の新機能 - @IT
https://atmarkit.itm[...]
2011-11-03
[55]
웹사이트
VB.NETに未来はあるのか?
http://www.infoq.com[...]
[56]
웹사이트
Download Microsoft .NET Framework 4.5.2 Developer Pack for Windows Vista SP2, Windows 7 SP1, Windows 8, Windows 8.1, Windows Server 2008 SP2 Windows Server 2008 R2 SP1, Windows Server 2012 and Windows Server 2012 R2 from Official Microsoft Download Center
http://www.microsoft[...]
[57]
웹사이트
Visual Studio 2015の新機能“Roslyn”とは - Build Insider
http://www.buildinsi[...]
[58]
웹사이트
Visual Basic の新機能 - Visual Basic | § Visual Basic 2017, 15.3, 15.5, 15.8 | Microsoft Docs
https://docs.microso[...]
[59]
웹사이트
Visual Studio 2019 リリースノート
https://docs.microso[...]
[60]
웹사이트
Visual Basic の新機能 - Visual Basic | § Visual Basic 16.0 | Microsoft Docs
https://docs.microso[...]
[61]
문서
Option Strict는 안전한 및 안전하지 않은 형식 검사 사이를 전환하는 데 사용할 수 있다.
[62]
웹인용
비주얼 베이직 2005에서 비주얼 베이직 업그레이드 마법사의 새로운 기능
https://web.archive.[...]
2011-01-16
[63]
웹인용
비주얼 베이직 2005에서 제네릭스 정의 및 사용
https://web.archive.[...]
2011-01-16
[64]
웹인용
비주얼 베이직 2005에서 연산자 오버로드
https://web.archive.[...]
2011-01-16
[65]
웹인용
Real Software slams MS IsNot patent application
http://www.theregist[...]
The Register
2009-04-09
[66]
웹인용
Real Software Slams Microsofts Patent Effort
http://www.eweek.com[...]
eWeek
2009-04-06
[67]
웹인용
United States Patent Application: 20040230959
http://appft1.uspto.[...]
US Patent & Trademark Office
2009-04-06
[68]
웹인용
도대체 "VBx"라는 것은 무엇인가?
http://www.panoptico[...]
2009-08-12
[69]
웹인용
What's New in Visual Basic 2010
http://msdn.microsof[...]
Microsoft
2009-08-12
[70]
웹인용
What's New in Visual Basic 2010
http://msdn.microsof[...]
Microsoft
2010-08-01
[71]
웹사이트
마이그레이션 - 비주얼 베이직 6.0으로부터 업그레이드
http://msdn2.microso[...]
MSDN
2008-04-20
[72]
웹인용
마이크로소프트 베이직: 1976-2001,R.I.P.
http://vb.mvps.org/v[...]
2009-05-07
[73]
웹사이트
비주얼 베이직 6.0을 위한 제품군 주기 안내서
http://msdn.microsof[...]
[74]
웹인용
마이크로소프트에 청원
https://web.archive.[...]
2014-04-05
[75]
웹사이트
모노 프로젝트: 비주얼베이직 닷넷 지원
http://www.mono-proj[...]
[76]
웹인용
모듈 정책
http://msdn.microsof[...]
MSDN - 개발자 센터
2010-01-20
[77]
웹인용
비주얼 베이직에서 주요한 절차
http://msdn.microsof[...]
MSDN - 개발자 센터
2010-01-20
[78]
웹인용
비주얼 베이직 버전의 Hello, world
http://msdn.microsof[...]
MSDN - 개발자 센터
2010-01-20
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com