Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 75467
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T20:31:14+00:00 2026-05-10T20:31:14+00:00

I just want to clarify one thing. This is not a question on which

  • 0

I just want to clarify one thing. This is not a question on which one is better, that part I leave to someone else to discuss. I don’t care about it. I’ve been asked this question on my job interview and I thought it might be useful to learn a bit more.

These are the ones I could come up with:

  • Java is ‘platform independent’. Well nowadays you could say there is the Mono project so C# could be considered too but I believe it is a bit exaggerating. Why? Well, when a new release of Java is done it is simultaneously available on all platforms it supports, on the other hand how many features of C# 3.0 are still missing in the Mono implementation? Or is it really CLR vs. JRE that we should compare here?
  • Java doesn’t support events and delegates. As far as I know.
  • In Java all methods are virtual
  • Development tools: I believe there isn’t such a tool yet as Visual Studio. Especially if you’ve worked with team editions you’ll know what I mean.

Please add others you think are relevant.

Update: Just popped up my mind, Java doesn’t have something like custom attributes on classes, methods etc. Or does it?

  • 1 1 Answer
  • 1 View
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T20:31:15+00:00Added an answer on May 10, 2026 at 8:31 pm

    Comparing Java 7 and C# 3

    (Some features of Java 7 aren’t mentioned here, but the using statement advantage of all versions of C# over Java 1-6 has been removed.)

    Not all of your summary is correct:

    • In Java methods are virtual by default but you can make them final. (In C# they’re sealed by default, but you can make them virtual.)
    • There are plenty of IDEs for Java, both free (e.g. Eclipse, Netbeans) and commercial (e.g. IntelliJ IDEA)

    Beyond that (and what’s in your summary already):

    • Generics are completely different between the two; Java generics are just a compile-time ‘trick’ (but a useful one at that). In C# and .NET generics are maintained at execution time too, and work for value types as well as reference types, keeping the appropriate efficiency (e.g. a List<byte> as a byte[] backing it, rather than an array of boxed bytes.)
    • C# doesn’t have checked exceptions
    • Java doesn’t allow the creation of user-defined value types
    • Java doesn’t have operator and conversion overloading
    • Java doesn’t have iterator blocks for simple implemetation of iterators
    • Java doesn’t have anything like LINQ
    • Partly due to not having delegates, Java doesn’t have anything quite like anonymous methods and lambda expressions. Anonymous inner classes usually fill these roles, but clunkily.
    • Java doesn’t have expression trees
    • C# doesn’t have anonymous inner classes
    • C# doesn’t have Java’s inner classes at all, in fact – all nested classes in C# are like Java’s static nested classes
    • Java doesn’t have static classes (which don’t have any instance constructors, and can’t be used for variables, parameters etc)
    • Java doesn’t have any equivalent to the C# 3.0 anonymous types
    • Java doesn’t have implicitly typed local variables
    • Java doesn’t have extension methods
    • Java doesn’t have object and collection initializer expressions
    • The access modifiers are somewhat different – in Java there’s (currently) no direct equivalent of an assembly, so no idea of ‘internal’ visibility; in C# there’s no equivalent to the ‘default’ visibility in Java which takes account of namespace (and inheritance)
    • The order of initialization in Java and C# is subtly different (C# executes variable initializers before the chained call to the base type’s constructor)
    • Java doesn’t have properties as part of the language; they’re a convention of get/set/is methods
    • Java doesn’t have the equivalent of ‘unsafe’ code
    • Interop is easier in C# (and .NET in general) than Java’s JNI
    • Java and C# have somewhat different ideas of enums. Java’s are much more object-oriented.
    • Java has no preprocessor directives (#define, #if etc in C#).
    • Java has no equivalent of C#’s ref and out for passing parameters by reference
    • Java has no equivalent of partial types
    • C# interfaces cannot declare fields
    • Java has no unsigned integer types
    • Java has no language support for a decimal type. (java.math.BigDecimal provides something like System.Decimal – with differences – but there’s no language support)
    • Java has no equivalent of nullable value types
    • Boxing in Java uses predefined (but ‘normal’) reference types with particular operations on them. Boxing in C# and .NET is a more transparent affair, with a reference type being created for boxing by the CLR for any value type.

    This is not exhaustive, but it covers everything I can think of off-hand.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Here's an interesting question ... is there a collection that is a struct somewhere
(Please no advise that I should abstract X more and add another method to
Ok, not really sure how to word, but will try my best. I have
I've got a project that I'm deploying to Heroku . The source code tree
I am writing a small Windows Forms application in C#. Basically, it will ask
What would be a good language/framework pair for learning Web development? I know other
Suppose I have, class example(object) def __init__(var1 = 10, var2 = 15, var3 =
I started tinkering around with HTML5 recently and am very interested in Audio tag.
i'm into rspec these days, trying to make my models more precise and accurate.
I learned something new while trying to figure out why my readwrite property declared

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.