На днях я дочитал очередной десяток книг, поэтому спешу поделиться с вами краткими рецензиями на них. В этот раз будет много рецензий на книги, как-то связанные с Java и JVM. Почему я вдруг так заинтересовался этой платформой, можно прочитать в заметке Быстрая настройка окружения для программирования на Java (теми, кто недолюбливает этот язык, но иногда вынужден иметь с ним дело) . С другими моими рецензиями можно ознакомиться здесь: седьмой десяток , шестой десяток , пятый десяток , четвертый десяток .
Gregory Smith
С этой книгой советовал ознакомиться Андрей Фролов в комментариях к своей статье «Базы данных в онлайн играх. От Аллодов Онлайн до Skyforge» . И неспроста, ведь книга действительно отличная.
Помимо прочего, тут можно прочитать про железки или, например, отличия EXT3 от XFS, а также про pgpool, pgBouncer , pgmemcache (не путать с pgmemcache d !), PL/Proxy и GridSQL. Книга чем-то напомнила мне Systems Performance: Enterprise and the Cloud , я даже начал думать, что их писал один и тот же человек. Но оказалось, что нет.
В общем и целом, годнота. Если работаете с РСУБД, притом, не обязательно именно с PostgreSQL , читать обязательно.
Chris Biscardi
Snap — это один из популярных веб-фреймворков для Haskell. Про Yesod и Scotty я уже кое-что знаю, про Happstack книжку читал , вот решил теперь почитать про Snap. В электронном виде книгу можно приобрести на сайте snapforbeginners.com .
Но не спешите этого делать, потому что книга оказалась на редкость скверной. Она тонюсенькая, можно сказать, даже не книга, а брошюрка. Темы CSS, JavaScript, интенационализации или хотя бы миграции схем баз данных в ней не раскрыты. Мне кажется, «Snap for Beginners» стоило бы раздавать бесплатно, ну или баксов за 5-10, но никак не за 35. Такие деньги за содержание уровня пары постов из блога — это просто кидалово! В общем, Snap я что-то не проникся.
См также рецензию Романа Чепляки на эту книгу .
Sigismondo Boschi, Gabriele Santomaggio
На удивление хорошая книжка о RabbitMQ. Если книга RabbitMQ in Action представляет собой такое лайтовое введение в RabbitMQ, разбавленное ведром воды, то RabbitMQ Cookbook — это такой хордкорный туториал, из которого вы реально узнаете много интересного, например, о репликации между кластерами, плагинах shovel и federation , а также разработке своих плагинов для RabbitMQ и ковырянии AMQP при помощи WireShark. Алсо в книге была обнаружена замечательная глава, посвященная работе с Amazon Web Services. И довольно занудная глава про разработку под iPhone. Хотя, возможно, кому-то это будет и интересно.
Мой вердикт — если у вас кролик в продакте, обязательно держите эту книгу под рукой. Она годная. И пусть вас не пугают примеры кода на Java, они вполне ОК.
Сидни Фейт
Хотите верьте, хотите нет, но это еще одна книженция, печатной копией которой я обладаю, но прочитать которую все никак не находилось времени.
Здесь довольно подробно описаны протоколы Ethernet, IP, TCP, UDP, ICMP, DNS, FTP , IMAP, POP3 , SMTP , NFS (!), HTTP, SNMP, NNTP, Gopher, Wais и SNMP, а также протоколы маршрутизации RIP, OSPF и BGP. IMAP и LDAP, впрочем, описаны довольно поверхностно. Зато все остальные прямо вплоть до того, какой битик в IP заголовке где находится и что означает. Плюс традиционные вещи в стиле «как работает traceroute», «как определить максимальный MTU между двумя хостами» и так далее. В конце есть про IPv6 и сокеты.
Книга не новая, но все равно актуальная и очень интересная. Рекомендую. Еще на эту тему, если интересуетесь, можно порекомендовать учебник Олиферов .
Кей Хорстманн, Гари Корнелл
В народе эта книга более известна как «Core Java». В данном издании речь идет о Java SE 7. Книжка, как утверждают сами авторы, для тех, кто уже какое-то время программирует, и хочет освоить Java.
Подкупает честность авторов. Дескать, да, Java в определенных аспектах кривоватый язык, но зато у него есть такие-то и такие-то преимущества, и что самое главное, с помощью Java вы сделаете свою чертову работу. Советы в стиле «давайте сначала научимся компилировать и запускать программы из консоли, а уже потом будем ставить IDE» или «попишем на Swing самостоятельно, а потом, может быть, дойдем и до WYSIWYG редакторов» также внушают доверие.
Книга содержит множество интереснейших врезок с описанием недостатков C/C++, которые были устранены в Java. Например, в С/C++ оператор >>
может заполнить старшие биты либо нулями, либо битом знака. В зависимости от реализации и платформы может случаться и то и то. В Java есть два отдельных оператора. Оператор >>
всегда заполняет старшие биты битом знака, а >>>
— всегда нулями.
В первом томе рассмотрены: история языка, установка JDK, выбор IDE (то, о чем часто забывают авторы книг о языках программирования), основы Java, включая рефлексию, вложенные классы и прокси, Java 2D, Swing (авторы вообще уделяют написанию UI много внимания), апплеты, структура jar-пакетов, отладка, а также многопоточность, в том числе атомарные переменные, RW-локи, copy on write, TLS, футуры , пулы потоков, fork-join framework, различные виды очередей и других коллекций.
Примеры можно скачать на http://www.horstmann.com/corejava.html .
Кей Хорстманн, Гари Корнелл
Во втором томе рассмотрены: работа с файлами и стримами (кстати, стримы чем-то похожи на кондуиты в Haskell ), сериализация (включая подробное описание, в какие байтики на диске превращаются объекты), сетевое программирование, NIO.2, JDBC , XML (DOM, SAX, StAX, XSLT, Xpath, DTX, XML Schema), регулярные выражения , больше Swing и Java 2D, аннотации, класслоадеры, JavaBeans, компиляция кода на Java кодом на Java, криптография, скриптинг под JVM на JavaScript, Groovy и Scheme, а также RMI, JMI и другие трехбуквенные аббревиатуры.
Оба тома я читал в оригинале, имея при этом дома печатные версии на русском языке. Последние имеют твердый переплет, но бумага такая серая, тонкая, и картинки все черно-белые. Воспринимается уже совсем не так, как электронная версия на английском языке. В качестве настольных справочников держать можно, для чего я их, собственно, и приобрел, но читать лучше на английском.
Вообще, двухтомник отличный. То, что нужно, если вы хотите в кратчайшие сроки познакомиться с Java и JVM. В свете выхода Java 8 он ничуть не потерял своей актуальности, ибо (1) на Java 7 еще долго и много где будут писать, а кто-то до сих пор пишет и на более ранних версиях, (2) не так уж много в Java 8 радикальных изменений, с ними вполне можно ознакомиться, прочитав пару-тройку туториалов из интернетов. Короче, рекомендую.
Debasish Ghosh
В книге мне понравилось все, кроме содержания. Какой-то салат из Java, Scala версии 2.8, Clojure, Groovy, Ruby и периодического упоминания Haskell, разбавленный ведром майонеза, пытающегося все это как-то систематизировать и объясняющего, как круто domain specific languages облегчают жизнь. С не имеющими абсолютно никакого отношения к реальности фантазиями автора на тему того, что трейдер или там бухгалтер якобы будет писать код на как бы «понятном» ему языке программирования в стиле TradeDSL.newTrade( 100.stocks.of("IBM"), ... )
, и что от этого всем будет счастье, ведь трейдеры знают свою предметную область. Особенно шокировал парсинг DSL на Ruby при помощи регулярных выражений .
Единственная реальная ценность «DSLs in Action» заключается в том, что в ней объясняются ANTLR и немного Xtext. Бред, в общем. Вместо этой книги лучше прочтите нормальный туториал по JavaCC или там Jikes. Ну или раскурите макросы в Scala и Clojure.
Бенджамин Эванс, Мартин Вербург
Она же The Well-Grounded Java Developer . Здесь вы найдете хороший обзор нововведений в Java 7-й версии, объяснение внедрения зависимостей и инверсии управления (Guice, JSR-330), NIO.2, современного многопоточного/параллельного программирования в Java (java.util.concurrent.*, футуры, ThreadPoolExecuter, ForkJoinPool), класслоадеров, формата файлов классов и даже JVM-ассемблера. Также освещен вопрос повышения производительности кода и имеются отдельные главы с обзорами языков программирования Scala, Groovy и Clojure.
Здесь же можно почитать про разработку через тестирование с использованием JUnit, Mockito и ScalaTest (я вот лично до этого не знал, что в Java можно удобно создавать mock-объекты и даже mock’ать static методы ), а также веб-разработка при помощи Grails и уже знакомого нам с вами по книге Seven Web Frameworks in Seven Weeks Clojure-фреймворка Compojure. Надо признать, последний — няша.
Все просто и по делу, без воды. Перевод хороший, бумага не газетная, обложка мягкая. Если в свое время вы читали «Философию Java», то книга «Java. Новое поколение разработки» будет прекрасным дополнением к ней.
Кей Хорстман
Совершенно замечательная книжка по Scala от того же Кея Хорстмана, который один из соавторов Core Java. Представляет собой своего рода краткую (388 страниц) выдержку из книжки Одерски . Предназначена для программистов, желающих быстро разобраться, что это за Scala такая. То есть, тут нет долгих и мучительных объяснений, что такое переменные и циклы. Только краткое описание синтаксиса и семантики. Книга разбита на небольшие главы, в конце которых предлагаются небольшие упражнения для усвоения материала.
Повествование ведется от простого к сложному — сначала рассматриваются более простые темы, затем более сложные. В последней главе объясняются продолжения (continuations) в Scala, про которые я вообще почти ничего не понял. В лучших традициях книжек про Scala глава про акторы уже успела устареть (ибо не Akka), потому я ее даже не читал.
Больше всего в Scala меня пугает сложная система типов на которую к тому же накладываются всякие там неявные преобразования. Большинство программистов не в состоянии Haskell осилить, а вы им предлагаете такое! С другой стороны, тут, к примеру, пишут , что все не так уж плохо. В общем, я пока не могу до конца понять, нравится мне Scala или нет.
Возвращаясь к книге. Как уже отмечалось, она для тех, у кого нет времени читать 800 страниц «Programming in Scala». Или, как в моем случае, для тех, кто хочет быстро освежить свои знания языка. Также книга представляет собой отличный настольный справочник. Перевод не жжот, бумага качественная, переплет тоже — книга не разваливается, как это иногда бывает у ДМК-Пресс. Отличный подарок знакомым джавникам 🙂
Paul Butcher
Как отмечается в начале книги, ее стоило бы назвать «Seven Cuncurrency and/or Parallelism Models in Seven Weeks», но это было бы слишком длинным названием. Другими словами, эта книга о многопоточности и параллелизме, а не только многопоточности.
Здесь рассматриваются традиционные подходы в Java, такие примитивы в Clojure, как pmap, futures, promises (которые, кстати, чем-то напоминают MVars в Haskell ), а также atoms, agents (эдакие асинхронные атомы или упрощенные акторы), core.async (что-то вроде труб из мира Go ) и STM , а также модель акторов на примере языка Elixir, OpenCL, в том числе его совместное использование с OpenGL, и новое, пока что не сильно разлетевшаяся по рунету, понятие, под названием Lambda Architecture (в соответствующем разделе книги объясняются Hadoop и Storm).
Читается легко и приятно. Аналогия на этот раз проводилась с автомобилями. Порадовали хорошие ссылки в сносках. Например, я узнал, что в Clojure есть биндинки для Akka и что в GCC есть транзакционная память — STM и HTM . А еще мне просто жутко доставило пасхальное яйцо в книге — бонусная онлайн-глава, посвященная Scala и Akka [PDF] .
Книга очень хорошая, как, по всей видимости, и все книги серии Seven in Seven.
Предвидя массу традиционных вопросов «а как же художественные книги», «были ли прорешаны задачки в конце глав», «сколько материала реально усвоилось» и так далее, хочу сразу дать ссылку на этот FAQ .
А что интересного вы прочли в последнее время?
Дополнение: Девятый десяток прочитанных книг и журналов