최근에 J2SE를 배우고 있는데 마빙빙 선생님의 J2SE를 다 읽었습니다. 선생님의 강의를 들을 때 방해가 되지 않을 만큼 유머러스한 분이신 것 같습니다. 마빙빙 선생님 진심으로 엄지손가락, 이 영상을 배우게 해주신 미 선생님께도 엄지손가락 두 개 더! (세상에는 아름다운 것이 많지만, 아름다운 것을 발견하는 눈이 부족한 것 같습니다!)
더 이상 고민하지 말고, 이 영상에서 실제로 어떤 내용이 나오는지 살펴보겠습니다. 아래와 같이:
객체지향 언어라면 뭐든 공부해 본 사람들(저는 Java를 모델로 하고 Java를 더욱 개선한 C#을 공부했습니다.) 이 그림을 보면 첫인상은 기본적으로 이런 것들은 다 공부했다는 느낌이 듭니다. , JDBC는 새로운 것입니다.
사실, 그들은 대부분의 사람들이 어쨌든 동일하다고 생각합니다. 아래에서 비교해 보세요!
구문 측면에서 둘 다 C++의 함수 및 해당 매개변수의 const 수정, 매크로 대체, 전역 변수 및 전역 함수와 같은 화려한 부분을 많이 버렸습니다.
상속 측면에서 둘 다 이해하고 구성하기 쉬운 단일 루트 상속과 다중 인터페이스 구현 솔루션을 채택합니다. 소스 코드 구성 측면에서 선언과 구현을 통합하는 더 나은 논리적 캡슐화가 제안되었습니다.
기본 유형과 단일 루트 상속 객체 간의 유형 통합 측면에서 C#에서 제안하는 box/unbox는 Java의 패키징 클래스보다 더 스마트하고 효율적입니다.
구성 요소 지향은 의심할 여지 없이 현대 소프트웨어 개발의 주류입니다. C#은 심지어 컴포넌트 프로그래밍에 "집착"하게 되었습니다. 이는 6년 전에 데뷔한 Java와는 완전히 다른 것입니다. 물론 이것은 시대의 문제입니다. C#은 속성, 인덱서, 위임, 이벤트, 연산자 오버로딩, 특성, 버전 등을 통해 구성 요소 프로그래밍에 대한 직접적인 지원을 구현합니다. 이는 Java의 메소드, 인터페이스 또는 어댑터를 통해 간접적으로 구현할 수 있지만 소프트웨어 산업의 역사를 보면 이것이 프로그래밍 효율성이나 논리 설계에 큰 피해를 입힌다는 것을 알 수 있습니다. 고급 언어가 가장 먼저 직면하는 것은 사람이 아니라 사람입니다. 기계. 이러한 언어 수준의 구성 요소 지원 메커니즘 외에도 .NET 플랫폼은 구성 요소 구성, 운영, 관리 등을 위한 패키지 솔루션도 제공하며, 구성 요소 개발을 위해 맞춤 제작된 Visual Studio.NET은 더욱 흥미롭습니다. . C#에 대한 모든 것입니다. 컴포넌트 프로그래밍은 광대한 세계를 열어줍니다. 다른 기술 측면에서는 Java의 약한 단점은 무시할 수 있지만 구성 요소 프로그래밍 측면에서는 C#에 비해 Java에는 치료할 수 없는 결함이 있습니다. 특히 C++ 및 Visual Basic 배경을 갖고 있는 개발자에게 C#은 이와 관련하여 거부할 수 없는 매력과 유혹을 가지고 있습니다.
크로스 플랫폼 측면에서는 JVM의 속도가 여전히 골칫거리이지만 Java의 지원과 구현은 높이 평가됩니다. C#은 기본 구조 측면에서 이식성을 충분히 고려했지만 적어도 아직 성숙하고 테스트된 제품은 없습니다. C#은 크로스 플랫폼 프로그래밍보다 XML 웹 서비스 상호 운용성에 더 관심이 있는 것 같습니다. 그러나 기본 언어 구조(CLI)를 통해 20개 이상의 주류 언어에 대한 C#의 개체 수준 상호 운용성 지원은 C#의 기술적 지위를 크게 향상시켰습니다. COM 구성 요소와의 저렴한 상호 운용성은 C#에서도 많은 이점을 얻습니다. 호환 가능한 시스템을 유지하는 것은 현대 소프트웨어 산업에 매우 중요하며 대다수 개발자의 책임을 나타내는 신호이기도 합니다.
물론 두 언어에 대한 포괄적인 기술 평가는 결코 위 사항에 대한 단순한 목록과 비교가 아닙니다. 해당 백엔드 플랫폼(.NET의 경우 C#, J2EE의 경우 Java), 프로그래밍 프레임워크의 지원입니다. , 그리고 각 언어에 대한 관련 도구의 구현은 이제 일부 시스템 기반 등이 프로그래밍 언어 개발에 상당한 영향을 미칩니다. 순전히 기술적인 관점에서 볼 때 C#은 의심할 여지 없이 Java보다 경쟁력이 더 높습니다. 누가 누구를 베꼈는지 논쟁하는 것은 의미가 없습니다. 기술의 발전은 본질적으로 상호 학습의 과정입니다. 순수한 기술 경쟁은 대결이 되어야 하는 경우 이 논쟁의 결과를 결정할 수 없습니다. 소프트웨어 업계는 경쟁을 보고 기뻐합니다. 시장에 맞춰 조정된 기술만이 우리에게 더 나은 서비스를 제공할 수 있습니다.