понедельник, 3 октября 2011 г.

Java vs. C#, Round 1

Да, я очень предвзято отношусь к указанным технологиям, так что далее всё надо понимать как моё личное имхо. Я не собираюсь сравнивать тут тонкости работы GC, организацию кучи, Sql Server и oracle, кроссплатформенность, "3 billion devices around the world", win phone 7 и прочее. Только code style. "Это всё несущественно!" — чтож, пожалуйста, не читайте, вы мне не должны.

Просто личное впечатление от процесса разработки.
Добро пожаловать под кат, раунд 1.

Уже неделю пилю приложение на java аля то, что создается по умолчанию в новом проекте asp.net mvc 3 %) Пока не очень доволен, честно ) Хотя, конечно, с привычки слезать всегда сложно.

Разброс и количество технологий, редакторов, реализаций, библиотек и сокращений просто поражает.


JBoss, WebSphere, JSP, JSTL, JVM, JRE, JDK, Tomcat, servlet, scriptlet, Ant, Maven, Struts, Spring, JDBC, Vaadin, JUnit, Jameleon, просто пыщь.

Немало доставляет соглашение об именовании переменных в java.
Небольшое сравнение:
java .net
Namespace
edu.cmu.cs.bovik.cheese
System.Collections.Generic
Class
class MyClass
class MyClass
Interface
interface Enumberable;
interface IEnumerable
Field
private int count;
private int _count;
Property
public String firstName;
public string FirstName;
Protected field
protected String firstName;
protected string FirstName;
Local variable
int localCount = 10;
var localCount = 10;
Inherit class
class A extends B
class A : B
Implement interface
class A implements B, C
class A : IB, IC
Inheritance
public class Order 
  extends Object 
  implements Serializable
public class Order 
  : Object, 
  ISerializable

Вот и как теперь отличить поле, protected свойство, локальную переменную, вызов метода? Интерфейс от класса?

Также, да, я не описался, интерфейсы в java не принято называть с "I" (Clonable, Comparable vs. IClonable, IComparable) *facepalm*. Но большинство разработчиков, спасибо, всё таки называют (по крайней мере мне так показалось).

Класс String с большой буквы!

Ну, про свойства мы с Вами и так всё знаем
java .net
private String name;
public String getName() {
  return name;
}

protected void setName(String name) {
  this.name = name;
}
public Name { get; protected set; }

Да, вот ещё одно любимое слово в java - this.

В следующем раунде рассмотрим использование продвинутых технологий языков - рефлексию и шаблоны, а так же впечатления от IDE.