주요 차이점 : Java는 C 언어의 영향을받은 프로그래밍 언어입니다. C 및 C ++에서 문법의 대부분을 파생하지만, 어느 것보다 낮은 수준의 기능을 가지고 있습니다. Java는 이전 언어와 비교하여 구현 종속성이 적도록 설계된 범용 프로그래밍 언어입니다. C #은 날카로운 것으로 알려져 있으며 객체 지향 프로그래밍 언어입니다. C #은 다중 패러다임 프로그래밍 언어입니다. C #은 C 프로그래밍 언어를 기반으로합니다. 원래 Anders Hejlsberg에 의해 .NET 프레임 워크에서 사용하기 위해 Microsoft 용으로 개발되었습니다.

Java는 Sun Microsystems의 James Gosling에 의해 개발되었으며 1995 년에 릴리스되었습니다. 원래 Sun Microsystems의 Java 플랫폼의 핵심 구성 요소로 릴리스되었습니다. Sun은 GNU General Public License에 따라 Java 기술의 대부분을 재 라이센스했습니다. 즉, GNU 일반 공중 라이선스에 따라 라이선스가 허여 된 모든 기술은 오픈 소스이며 일반적으로 무료로 사용할 수 있습니다. Sun Microsystems는 결국 Oracle Corporation으로 합병되었습니다.
Java는 다양한 플랫폼에서 동일한 코드를 실행할 수 있도록 설계되었습니다. 즉 개발자는 "한 번만 작성하여 어디서나 실행"(WORA) 할 수 있습니다. 따라서 Java 응용 프로그램은 일반적으로 바이트 코드로 컴파일됩니다. Java 바이트 코드가 포함 된 클래스 파일은 모든 JVM (Java Virtual Machine)에서 실행될 수 있습니다. 이는 컴퓨터 아키텍처에 관계없이 이루어집니다.
2012 년 현재 Java는 가장 많이 사용되는 프로그래밍 언어 중 하나입니다. 이는 특히 클라이언트 - 서버 웹 응용 프로그램에 해당됩니다. 다른 많은 시스템에서는 Java 용 GNU Compiler 및 GNU Classpath와 같은 Sun 기술의 대체 구현을 개발했습니다.
C #은 날카로운 것으로 알려져 있으며 객체 지향 프로그래밍 언어입니다. C #은 다중 패러다임 프로그래밍 언어입니다. 여기에는 강력한 타이핑, 명령형, 선언적, 기능적, 절차 적, 일반, 객체 지향 (클래스 기반) 및 구성 요소 지향 프로그래밍 분야가 포함됩니다.
C #은 C 프로그래밍 언어를 기반으로합니다. 원래 Anders Hejlsberg에 의해 .NET 프레임 워크에서 사용하기 위해 Microsoft 용으로 개발되었습니다. Ecma (ECMA-334)와 ISO (ISO / IEC 23270 : 2006)는 C # 언어를 나중에 표준으로 승인했습니다. C #은 공용 언어 인프라 용으로 설계된 프로그래밍 언어 중 하나입니다. C #은 단순하고 현대적인 범용 객체 지향 프로그래밍 언어입니다.

- C # 언어는 단순하고 현대적인 범용 객체 지향 프로그래밍 언어입니다.
- 언어와 구현은 강력한 형식 검사, 배열 범위 검사, 초기화되지 않은 변수 사용 시도 감지 및 자동 가비지 수집과 같은 소프트웨어 엔지니어링 원칙을 지원해야합니다. 소프트웨어 견고성, 내구성 및 프로그래머 생산성이 중요합니다.
- 이 언어는 분산 환경에서의 배포에 적합한 소프트웨어 구성 요소 개발에 사용하기위한 것입니다.
- 특히 C와 C ++에 이미 익숙한 프로그래머에게는 소스 코드 이식성이 프로그래머의 이식성과 마찬가지로 매우 중요합니다.
- 국제화 지원은 매우 중요합니다.
- C #은 정교한 운영 체제를 사용하는 매우 큰 것부터 매우 작은 전용 기능까지 호스트 및 임베디드 시스템 용 응용 프로그램을 작성하는 데 적합합니다.
- C # 응용 프로그램은 메모리 및 처리 전력 요구 사항과 관련하여 경제적이기는하지만 C 또는 어셈블리 언어로 성능 및 크기와 직접 경쟁하기위한 것은 아닙니다.
C 언어를 기반으로하기 때문에이 언어는 C 언어와 매우 비슷합니다. 그러나 C #의 단점은 .NET Framework에서 사용하기 위해 Microsoft에서 개발 한 것처럼 Microsoft 운영 체제에서만 작동한다는 것입니다.
Java와 C #의 차이점은 다음과 같습니다.
- C #은 Java와 비교하여 더 많은 데이터 유형을 제공합니다.
- C #에는 Java보다 원시 데이터 형식이 많이 포함되어 있습니다.
- C #은 연산자 오버로딩을 지원하지만 Java는 그렇지 않습니다.
- C #은 자바가 지원하지 않는 스트럿 타입을 지원합니다.
- C #의 모든 데이터 유형은 스트럿입니다.
- C #은 Java보다 향상된 버전 관리 기능을 제공합니다.
- C #에서는 ref 키워드를 사용하여 매개 변수를 참조로 전달할 수 있지만 Java에서는 매개 변수를 값으로 전달할 수 있습니다.
- C #은 param 키워드를 사용하여 다양한 수의 매개 변수를 허용합니다.
- C #은 초기화를 위해 정적 생성자를 제공합니다.
- C #은 break 문 대신 goto 문을 제공합니다.
- C #에서는 Java와 비교하여 배열 선언이 다릅니다.
- Java 규칙은 각 파일에 하나의 공용 클래스를 두는 것이고 일부 컴파일러는이를 요구합니다. C #은 소스 파일 정렬을 허용합니다.
- 자바는 이벤트와 델리게이트를 지원하지 않습니다.
- Java에서 메소드는 기본적으로 가상이지만 최종적으로 작성할 수 있습니다. C #에서는 기본적으로 봉인되지만 가상으로 만들 수 있습니다.
- C #은 예외를 체크하지 않습니다.
- Java는 사용자 정의 값 유형의 작성을 허용하지 않습니다.
- Java에는 연산자 및 변환 과부하가 없습니다.
- Java에는 반복자의 간단한 구현을위한 반복자 블록이 없습니다.
- Java에는 LINQ와 같은 것이 없습니다.
- 부분적으로 델리게이트가 없기 때문에, 자바는 익명 메소드와 람다 표현식과 같은 것을 가지고 있지 않습니다.
- Java에는 표현식 트리가 없습니다.
- C #에는 익명의 내부 클래스가 없습니다.
- Java에는 C # 3.0 익명 유형과 동일한 기능이 없습니다.
- Java에는 내재적으로 유형화 된 로컬 변수가 없습니다.
- Java에는 확장 메소드가 없습니다.
- Java에는 오브젝트 및 콜렉션 초기화 프로그램 표현식이 없습니다.
- Java는 언어의 일부로 등록 정보를 갖지 않습니다. 그들은 get / set / convention의 관습입니다.
- Java에는 "안전하지 않은"코드와 동일한 기능이 없습니다.
- Java의 enum은 객체 지향적입니다.
- Java에는 사전 처리기 지시문이 없습니다 (C #의 #define, #if 등).
- Java에는 참조로 매개 변수를 전달하기위한 C #의 참조 및 출력이 없습니다.
- Java에는 부분 유형과 동일한 기능이 없습니다.
- C # 인터페이스는 필드를 선언 할 수 없습니다.
- Java에는 부호없는 정수 유형이 없습니다.
- Java는 십진 형식에 대한 언어 지원이 없습니다.
- Java에는 nullable 값 유형과 동일한 기능이 없습니다.