Просто личное впечатление от процесса разработки.
Добро пожаловать под кат, раунд 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.