LINUX.ORG.RU

Изучение Java

 


2

3

Возникло жгучее желание изучить Java. Имеются два тома Кей С. Хортсманна и Гарри Корнелла Java2. Однако изучать старую версию фреймворка, и затем новинки каждой новой версии не очень рационально. Думаю лучше купить книгу для новичков по последней версии языка. Можете посоветовать конкретную книгу? Годный ли вот этот вариант: http://www.ozon.ru/context/detail/id/31249554/

Шилдт не очень хороший автор. Я рекомендую «Java 8 для нетерпеливых» Хорстманна.

Weres ★★★
()

Java неудачный вариант для новичка. Язык сложный, возможностей мало, работы тоже мало, а на каждую вакансию десяток макак. Сейчас каждый школьник учит Java, а потом не знает что делать с ним. Лучше попробуй Haskell. На нём и конкуренция пониже, и зарплаты больше, и сам язык понятней. Если никогда не занимался программированием, то начинать лучше всего с Haskell - после него другие языки учатся быстрее. Работы полно, платят отлично. По книгам. Если есть хоть немного знаний программирования, читай это: http://www.ozon.ru/context/detail/id/30425643/ Если совсем новичок, пойдет эта книга: http://www.ozon.ru/context/detail/id/28346038/ Ну и куча онлайн-учебников. Вот, например: https://anton-k.github.io/ru-haskell-book/book/home.html Хороший учебник, всё расписано подробно. Сам по нему учился. Рекомендую.

anonymous
()
Ответ на: комментарий от anonymous

Java неудачный вариант для новичка. Язык сложный, возможностей мало, работы тоже мало, а на каждую вакансию десяток макак. Сейчас каждый школьник учит Java, а потом не знает что делать с ним. Лучше попробуй Haskell. На нём и конкуренция пониже, и зарплаты больше, и сам язык понятней. Если никогда не занимался программированием, то начинать лучше всего с Haskell - после него другие языки учатся быстрее. Работы полно, платят отлично. По книгам. Если есть хоть немного знаний программирования, читай это: http://www.ozon.ru/context/detail/id/30425643/ Если совсем новичок, пойдет эта книга: http://www.ozon.ru/context/detail/id/28346038/ Ну и куча онлайн-учебников. Вот, например: https://anton-k.github.io/ru-haskell-book/book/home.html Хороший учебник, всё расписано подробно. Сам по нему учился. Рекомендую.

Я не новичок. Десяток лет на C++ программирую. Заинтересовался разработкой под андроид, как хобби, потому и необходимость в Java возник. Ну и в принципе пригодится.

popov-aa
() автор топика
Ответ на: комментарий от popov-aa

Я не новичок. Десяток лет на C++ программирую. Заинтересовался разработкой под андроид, как хобби, потому и необходимость в Java возник. Ну и в принципе пригодится.

Тебе не нужно читать книги. Садись и пиши код. После C++ в Java мало что нужно изучать, по крайней мере для того, чтобы начать работать. Почитай какие-нибудь эссе вида «Java for C++ programmers», приучи себя к тому, что GC работает сам и помогать ему не надо (для многих C++-ников это самое сложное), прогляди что есть в стандартной библиотеке Java (коллекции, строки, потоки), прогляди, что есть в Guava, чтобы не писать лишний раз велосипеды и всё. Ну и потом API андроида, это уже своя большая тема.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Что про

new Integer(100) == new Integer(100)

new Integer(200) != new Integer(200)

он методом тыка узнает? Так и волосы на голове закончится могут.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Stahl

Объекты - это скрытые указатели. Для сравнения объектов есть метод equals. Два объекта с одинаковыми значениями не обязательно будут по одному адресу.

Когда сравниваем по == и != мы сравниваем адреса объектов, а не их самих.

Аналог в плюсах (класс реализуешь сам)

Int *a = new Int(10);
Int *b = new Int(10);
std::cout << a == b << std::endl;

P.S. неужели все твои ASCII игры на плюсах + Qt и Java ты не касался при разработке под Android?

Deleted
()
Последнее исправление: merhalak (всего исправлений: 3)
Ответ на: комментарий от Deleted

Когда сравниваем по == и != мы сравниваем адреса объектов

Ну разумеется.
И как тогда возможно «new Integer(100) == new Integer(100)»?

Stahl ★★☆
()
Ответ на: комментарий от Deleted

и Java ты не касался

Нет. И пока не собираюсь.

Stahl ★★☆
()
Ответ на: комментарий от Stahl

Для чисел из диапазона -128..127 память под объекты предварительно выделена и при создании объектов Integer возвращаются одинаковые указатели для одинаковых чисел из этого диапазона.

utf8nowhere ★★★
()
Ответ на: комментарий от utf8nowhere

Прикольно. А если я изменяю значение, то меняется и указатель? И все ранее взятые указатели становятся невалидными? Действительно прикольно.

Stahl ★★☆
()
Ответ на: комментарий от Stahl

В ява все есть иммутабле. Там можно память сразу выделить под все комбинации строк, все равно никто не заметит :)

unt1tled ★★★★
()
Ответ на: комментарий от anonymous

Лучше попробуй Haskell. На нём и конкуренция пониже, и зарплаты больше, и сам язык понятней

так толсто, что жыр сочился еще с названия треда в трекере.

i36_zubov
()

ты никогда не выучишь java, а если и выучишь, то станешь неадекватом «яванепотребляетресурсов»

когда тебе будут показывать легкое десктопное приложение на яве, потребляющее больше гига памяти и нормальный аналог, потребляющий 80Мб ОЗУ, ты будешь кричать что «этокриворукиепрогерыписалеатакяванепотребляетресурсов»

мир Java - мир неадеквата, розовых пони и эльфов-дартаньянов

раз уж решил покинуть реальный мир, перед этим приведи все дела впорядок

anonymous
()
Ответ на: комментарий от anonymous

Не надоело вам еще эту парашу всюду таскать?

cnupm
()
Ответ на: комментарий от Deleted

Ты какую-то фигню написал, там будет != в обоих случаях. Про то, что equals и == это разные вещи, и как работает автобоксинг в двух словах, в этих отличиях будет написано. А что возвращает Integer.valueOf — можно и в исходниках посмотреть, в любом случае это не так существенно.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Deleted

ухахатывался всем офисным уничтожителем бумаг

не поверишь, но вот ниразу в своих программах не имел даже 2х строк с одинаковым содержанием (зачем,лол)

где ты эти анеКдоты берешь?

unt1tled ★★★★
()
Ответ на: комментарий от Stahl

Никак не возможно, товарищ хотел написал Integer.valueOf(100) == Integer.valueOf(100), но Integer.valueOf(200) != Integer.valueOf(200). Как ты понимаешь, метод valueOf это обычный метод, который просто кеширует значения от -128 до 128 (по умолчанию, это можно поменять) и никакой магии тут нет. Небольшая магия начинается, когда мы включаем автобоксинг, т.е. Integer i1 = 100, i2 = 100, вызывается тот же valueOf, но уже не так явно.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

В любом случае за == (!=) везде, кроме примитивных int, отпинают ногами и выкинут на мороз. Так что можно не распинаться :)

unt1tled ★★★★
()

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

nikolnik ★★★
()

Тебе не нужно читать книги. Садись и пиши код. После C++ в Java мало что нужно изучать, по крайней мере для того, чтобы начать работать.

Можешь прочитать «брошюру» The Java Language Environment - A White Paper 95го года от Sun, на 86 страниц. Там как раз сравнение с С++. И написано все понятно, в отличии от некоторых книг.

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 1)
Ответ на: комментарий от nikolnik

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

На C# пишу плагины под игру Rust. Очень нравится. Но Java - таки язык sdk Android. Не думаю, что xamarin предоставляет доступ ко всем интерфейсам sdk. Ну и Java вроде ынтерпрайзно =)

popov-aa
() автор топика
Ответ на: комментарий от Legioner

Ты какую-то фигню написал

окай, для особо занудных разжевываю

       Integer a = 100, b = 100;
       System.out.println(a == b);
       a = 200; b = 200;
       System.out.println(a != b);

Извини но мне лень было писать полностью, и все кроме тебя догадались о чем там речь.

Deleted
()
Ответ на: комментарий от unt1tled

значит у тебя не было программ на спринге, но вот зачем юзать сей костыль я действительно не понимаю, как и тот с интами

Deleted
()

Лучше выучи веб и php, для мобильных приложений сейчас можно писать на HTML5, для бэкенда лучше всего использовать PHP

anonymous_xakep
()
Ответ на: комментарий от anonymous_xakep

Выучить PHP — навсегда остаться смищным эникейщиком, получающим копейки.

Выучить Java — стать богатым и востребованным специалистом.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Выучить PHP — навсегда остаться смищным эникейщиком, получающим копейки.

с PHP можно стать востребованным специалистом по безопасности

anonymous_xakep
()
Ответ на: комментарий от Deleted

А еще лучше на Python (Flask).

питона мало в вебе, но кажется тоже неплохо(как раз стал изучать питон)

anonymous_xakep
()
Ответ на: комментарий от anonymous_xakep

Согласен. Как раз заканчиваю писать кросплатформенный аналог TrueCrypt на PHP, использующий библиотеки ассиметричного шифрования, также написанные мной на PHP.

Я очень востребованный специалист по безопасности с PHP

P.S. взломал не один сайт пентагона с помощью PHP

r0ck3r ★★★★★
()
Последнее исправление: r0ck3r (всего исправлений: 3)

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

r0ck3r ★★★★★
()

Спасибо всем за советы. Приобрел таки «Java 8. Полное руководство» Герберта Шилдта.

popov-aa
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.