Я собираюсь начать свою первую профессиональную карьеру в качестве разработчика программного обеспечения, и я, вероятно, буду писать много кода на Java. Я не очень много знаю о том, что конкретно буду писать, и, кроме того, у меня достаточно широкие интересы, когда дело доходит до кода.
По причинам, которые не стоит обсуждать, моя последняя стажировка заставляла меня писать только для Java 1.3 и 1.4 SDK. Кроме того, мое университетское образование было сосредоточено главным образом на алгоритмах, структурах данных и других теориях, а не на особенностях языка или библиотеках.
Итак, с учетом вышесказанного, какие функции, классы и т. Д. В текущей версии Java (в каком количестве мы сейчас находимся?) Стоило бы потратить мое время на чтение и почему? Что я упустил после 1.4.2, чтобы упростить вашу жизнь программиста?
Примеры и истории о том, как вы обнаружили конкретный пакет или что-то подобное и применили его, также были бы великолепны.
Ответы:
Изменения, которые я считаю наиболее важными:
Также прочитайте, на какую Java вы нацелены? , чтобы получить лучшее понимание каждой из трех версий.
источник
for
циклами»?Самым важным изменением в вашей повседневной жизни в программировании является введение дженериков. которые, скорее всего, будут использоваться в каждом новом модуле, который вас попросят написать, и это запутанный новый синтаксис.
Обобщение - это механизм, позволяющий, например,
List
содержать строки вместо голых объектов, где компилятор обеспечивает, чтобы элемент, который должен быть помещен в список, представлял собой строку, и он знает, что когда вы получаете элемент из списка, это строка ,Это делает программы лучше, так как вы избегаете явного приведения к целевому типу (который является частым источником ошибок, если вы ошибаетесь), а IDE может помочь вам выполнить всю грязную работу, так как знает гораздо больше о вашем коде, чем это было, когда это был просто список объектов.
Джошуа Блох написал хорошее введение в Generics, которое доступно в качестве примера главы на http://java.sun.com/docs/books/effective/
источник
def whatever
....id
который естьdef
илиvar
.... но опять же, безопасность 100% статической типизации удивительна, правда.Autoboxing - хорошая функция, представленная в Java 5. Как и в C #, компилятор теперь выполняет автоматическое преобразование между примитивными (базовыми) типами и соответствующими им классами обертки объектов (int в Integer и т. Д.) И обратно. Это значительно облегчает работу с коллекциями Java.
Я думаю, что каждое повторение было новым в Java 5. Это облегчает итерацию по массивам (и коллекциям), поскольку устраняет большую часть обычного беспорядка, связанного с настройкой и управлением индексной переменной или итераторами. Пример:
источник
Перечисляет , чтобы заменить окончательные статические и константы и помочь вам удалить ссылки на строки и магические числа. Пример взят из хороших людей на солнце / оракуле :
и
источник
java.util.concurrent был введен в версии 1.5. Лучший ресурс для изучения это (вероятно) книга Java Concurrency in Practice . IMHO параллелизм является наиболее важным конкурентным преимуществом Java по сравнению с чем-либо еще, поэтому его определенно стоит знать хорошо.
источник
java.util.concurrent
Примитивы параллелизма подобны автоматическому управлению памятью и ручному управлению памятью. Использование последнего - всего лишь рецепт, чтобы тратить больше времени на отладку и не дает никаких преимуществ.Ну,
StringBuilder
помог мне ускорить мою программу. Это эквивалентStringBuffer
безопасности без резьбы.источник
+
строками автоматически использует StringBuilder вместо StringBuffer для исходного уровня 1.5 и выше.Я помогу, классифицируя полезный ответ от @ykombinator. Его список - это список элементов, которые вы будете использовать ежедневно при «общей» разработке java.
Низкое воздействие и низкая сложность:
Высокий удар и средняя сложность:
Высокий удар и высокая сложность:
Низкое воздействие и высокая сложность (будет использоваться, только если вы не продвинулись в многопоточности)
Поэтому я бы посоветовал вам прочитать документацию / справку по малосложным малосложным предметам - их легко подобрать. Потратьте много времени на аннотации и обобщения - аннотации очень полезны, а обобщения могут быть довольно сложными.
Только посмотрите на новый контент для параллелизма, если вам нужно выполнить многопоточность.
источник
Поскольку я не могу комментировать, потому что мне меньше 50, я оставлю ответ. Это уже упоминалось, но я повторю еще раз: аннотации! Этот вид метаданных стал самым важным в моих годах опыта Java. Он хорошо используется, как это делают некоторые фреймворки, что делает код намного более лаконичным и чистым. Например, аннотации могут:
И, конечно, вы можете создавать свои собственные аннотации и знать, аннотируется ли метод, класс или поле с помощью отражения.
источник
Обучение на примере работает для меня
Вот быстрый пример идиоматической Java 6
Не беспокойтесь о Java5, она устарела по отношению к Java6.
Следующий шаг, аннотации. Они просто определяют аспекты вашего кода, которые позволяют читателям аннотаций заполнять шаблонную конфигурацию для вас. Рассмотрим простой веб-сервис, который использует спецификацию JAX-RS (он понимает RESTful URI). Вы не хотите беспокоиться о том, чтобы делать все неприятные WSDL и дурачиться с Axis2 и т. Д., Вам нужен быстрый результат. Хорошо, сделайте это:
Взрыва. Приложив немного волшебства конфигурации в ваш web.xml, вы отключились. Если вы работаете с Maven и у вас настроен плагин Jetty, ваш проект будет иметь свой собственный маленький веб-сервер прямо из коробки (вам не придется возиться с JBoss или Tomcat), и приведенный выше код будет реагировать на URI-адреса образуют:
Работа сделана.
источник
Вау, это был взрыв из прошлого! Я не использую Java уже 4 года - и за это время ничего не изменилось!
Там есть список функций по версии , но вот важный момент (конечно, плагиат) ...
J2SE 5.0 (30 сентября 2004 г.)
Java SE 6 (11 декабря 2006 г.)
Вот и все. Java SE 7.0 выглядит интереснее, но еще не выпущена.
Учитывая, сколько новых языковых функций и API было добавлено в C # за последние 4 года, я очень удивлен. Что происходит в Sun / Oracle?
источник