https://docs.oracle.com/javase/8/docs/platform/serialization/spec/serialTOC.html
Сериализация по умолчанию несколько многословна и предполагает максимально возможный сценарий использования сериализованного объекта, и, соответственно, формат по умолчанию (Serializable) аннотирует результирующий поток с информацией о классе сериализованного объекта.
Внешняя подача дает разработчику полный поток объектов точные метаданные класса (если таковые имеются) за минимально необходимой идентификацией класса (например, его имя). Это явно желательно в определенных ситуациях, таких как закрытые среды, в которых сопоставляются производитель потока объектов и его потребителя (который подтверждает объект из потока), а дополнительные метаданные о классе не имеют никакой цели и ухудшают производительность.
Дополнительно (как указано Uri) экстернализация также обеспечивает полный контроль над кодированием данных в потоке, соответствующем типам Java. Для (надуманного) примера вы можете записать логическое значение true, как «Y», а false - «N». Вы можете сделать это вовне.
Я делал некоторые ручные записи с DocBook, под cygwin, для создания HTML на Одну страницу, Многого HTML Страниц, CHM и PDF.
я установил следующее:
Редактирование : В ниже кода я использую больше, чем эти 2 файла. Если кто-то хочет очищенную версию сценариев и структуры папок, свяжитесь со мной: guscarreno (волнистый/в) googlemail (период/точка) com
я тогда использую configure.in:
AC_INIT(Makefile.in)
FOP=fop.sh
HHC=hhc
XSLTPROC=xsltproc
AC_ARG_WITH(fop, [ --with-fop Where to find Apache FOP],
[
if test "x$withval" != "xno"; then
FOP="$withval"
fi
]
)
AC_PATH_PROG(FOP, $FOP)
AC_ARG_WITH(hhc, [ --with-hhc Where to find Microsoft Help Compiler],
[
if test "x$withval" != "xno"; then
HHC="$withval"
fi
]
)
AC_PATH_PROG(HHC, $HHC)
AC_ARG_WITH(xsltproc, [ --with-xsltproc Where to find xsltproc],
[
if test "x$withval" != "xno"; then
XSLTPROC="$withval"
fi
]
)
AC_PATH_PROG(XSLTPROC, $XSLTPROC)
AC_SUBST(FOP)
AC_SUBST(HHC)
AC_SUBST(XSLTPROC)
HERE=`pwd`
AC_SUBST(HERE)
AC_OUTPUT(Makefile)
cat > config.nice <<EOT
#!/bin/sh
./configure \
--with-fop='$FOP' \
--with-hhc='$HHC' \
--with-xsltproc='$XSLTPROC' \
EOT
chmod +x config.nice
и Makefile.in:
FOP=@FOP@
HHC=@HHC@
XSLTPROC=@XSLTPROC@
HERE=@HERE@
# Subdirs that contain docs
DOCS=appendixes chapters reference
XML_CATALOG_FILES=./build/docbook-xsl-1.71.0/catalog.xml
export XML_CATALOG_FILES
all: entities.ent manual.xml html
clean:
@echo -e "\n=== Cleaning\n"
@-rm -f html/*.html html/HTML.manifest pdf/* chm/*.html chm/*.hhp chm/*.hhc chm/*.chm entities.ent .ent
@echo -e "Done.\n"
dist-clean:
@echo -e "\n=== Restoring defaults\n"
@-rm -rf .ent autom4te.cache config.* configure Makefile html/*.html html/HTML.manifest pdf/* chm/*.html chm/*.hhp chm/*.hhc chm/*.chm build/docbook-xsl-1.71.0
@echo -e "Done.\n"
entities.ent: ./build/mkentities.sh $(DOCS)
@echo -e "\n=== Creating entities\n"
@./build/mkentities.sh $(DOCS) > .ent
@if [ ! -f entities.ent ] || [ ! cmp entities.ent .ent ]; then mv .ent entities.ent ; fi
@echo -e "Done.\n"
# Build the docs in chm format
chm: chm/htmlhelp.hpp
@echo -e "\n=== Creating CHM\n"
@echo logo.png >> chm/htmlhelp.hhp
@echo arrow.gif >> chm/htmlhelp.hhp
@-cd chm && "$(HHC)" htmlhelp.hhp
@echo -e "Done.\n"
chm/htmlhelp.hpp: entities.ent build/docbook-xsl manual.xml build/chm.xsl
@echo -e "\n=== Creating input for CHM\n"
@"$(XSLTPROC)" --output ./chm/index.html ./build/chm.xsl manual.xml
# Build the docs in HTML format
html: html/index.html
html/index.html: entities.ent build/docbook-xsl manual.xml build/html.xsl
@echo -e "\n=== Creating HTML\n"
@"$(XSLTPROC)" --output ./html/index.html ./build/html.xsl manual.xml
@echo -e "Done.\n"
# Build the docs in PDF format
pdf: pdf/manual.fo
@echo -e "\n=== Creating PDF\n"
@"$(FOP)" ./pdf/manual.fo ./pdf/manual.pdf
@echo -e "Done.\n"
pdf/manual.fo: entities.ent build/docbook-xsl manual.xml build/pdf.xsl
@echo -e "\n=== Creating input for PDF\n"
@"$(XSLTPROC)" --output ./pdf/manual.fo ./build/pdf.xsl manual.xml
check: manual.xml
@echo -e "\n=== Checking correctness of manual\n"
@xmllint --valid --noout --postvalid manual.xml
@echo -e "Done.\n"
# need to touch the dir because the timestamp in the tarball
# is older than that of the tarball :)
build/docbook-xsl: build/docbook-xsl-1.71.0.tar.gz
@echo -e "\n=== Un-taring docbook-xsl\n"
@cd build && tar xzf docbook-xsl-1.71.0.tar.gz && touch docbook-xsl-1.71.0
для автоматизации производства вышеупомянутых выводов файла.
я предпочитаю использовать отклонить подход к сценариям просто, потому что комплект инструментальных средств более легко найти и использовать, не говоря уже о более легком к цепочке.
Популярным подходом является использование DocBook XSL Stylesheets .
Я использовал два утилиты CLI для упрощения моей цепочки инструментов docbook: xmlto и publican.
Publican выглядит элегантно для меня, но достаточно подходит для Fedora & amp; Редхат нуждается в публикации.
С помощью FOP вы получаете функции, которые кто-то решил, что они хотят реализовать достаточно плохо. Я бы сказал, что никто, кто серьезно относится к публикации, не использует его в производстве. Вам гораздо лучше с RenderX или Antenna House или Arbortext . (Я использовал их все за последние 10 лет реализации проектов.) Это зависит от ваших бизнес-требований, от того, сколько вы хотите автоматизировать, и от того, на что похожи навыки, время и ресурсы вашей команды. Это не просто вопрос технологии.
Я предпочитаю использовать Windows для создания контента (редактор Notepad ++). Publican в Linux - это хорошая цепочка инструментов для создания хорошей структуры документации и вывода результатов процесса. Я использую Dropbox (есть и другие службы обмена документами, которые должны хорошо работать на обеих платформах) на моей машине с Windows, а также на машине с Virtual Linux. С помощью этой настройки я смог получить комбинацию, которая прекрасно работает для меня. Когда работа по редактированию завершена в Windows (которая сразу синхронизируется с машиной Linux), я переключаюсь на Linux, чтобы запустить сборку publican и создавать выходные данные HTML и PDF, которые снова обновляются в моей папке Windows с помощью Dropbox.
Мы используем
У нас есть несколько идей:
Развертывание с каждой версией продукта не только PDF, но и оригинального полного документа DocBook ( так как мы частично пишем документ и частично генерируем их). Сохранение полного документа DocBook делает их независимыми для изменений в настройках системы в будущем. Это означает, что если система изменится, из которой контент был извлечен (или заменен другими системами), мы больше не сможем генерировать точный контент. Что может вызвать проблему, если нам потребуется переиздать (с другой таблицей стилей) весь набор руководств по продукту. Так же, как с банками; эти скомпилированные Java-классы также размещаются в Nexus (вы не хотите хранить их в своем SCM); это мы также сделаем с сгенерированным документом DocBook.
Обновление:
Fresh создала подключаемый модуль Maven HTML Cleaner , который позволяет добавлять содержимое DocBook на сайт проекта Maven (доступна бета-версия). Обратная связь приветствуется через форум открытого обсуждения .
Относительно вопроса о ЩЕГОЛЕ Apache: когда мы установили наш набор инструментальных средств (подобный тому, что Gustavo предложил), у нас были очень хорошие результаты с помощью механизм RenderX XEP . XEPs производят полируемые взгляды, и насколько я вспоминаю, у ЩЕГОЛЯ были некоторые проблемы с таблицами (это было несколько лет назад, хотя, это, возможно, изменилось).
Таблицы стилей DocBook, плюс ЩЕГОЛЬ, работают хорошо, но я наконец решил кинуться за RenderX, который покрывает стандарт более тщательно и имеет некоторые хорошие расширения, которые используют в своих интересах таблицы стилей DocBook.
книга Bob Stayton, DocBook XSL: полное руководство , описывает несколько альтернативных наборов инструментальных средств, включая, которые работают над Linux или Windows (почти, конечно, MacOS также, хотя я лично не использовал Mac).
Для вывода HTML я использую таблицы стилей XSL Docbook с процессором XSLT xsltproc.
Для вывода PDF я использую dblatex , который переводится в LaTeX, а затем используется pdflatex для компиляции в PDF. (Раньше я использовал Jade, таблицы стилей DSSSL и jadetex.)
Мы используем XMLmind XmlEdit для редактирования и плагин Maven docbkx для создания вывода во время наших сборок. Для набора хороших шаблонов обратите внимание на те, которые предоставляют Hibernate или Spring .
Если вы используете Red Hat, Ubuntu или Windows, вы можете взглянуть на Publican, который, как предполагается, представляет собой довольно полный набор инструментов командной строки. Red Hat широко его использует.