• Где хранить базы данных для java приложения?

    @igor_suhorukov
    Возможно просто вам подойдет веб приложение, где пользователи будут подключаться к серверу и совместно редактировать данные. То как вы хотите решить задачу создаст вам больше проблем, Стандартный рецепт в этом случае - многозвенная архитектура с централизованным сервером БД, сервером приложения и веб сервером. Поскольку скорее всего у вас объемы данных и потребности в масштабировании минимальны, то я бы вам рекомендовал совместить все эти три компонента в одном java процессе (H2 база, jetty как веб сервер и ваша функциональность). При правильной реализации потом будет несложно разнести эти компоненты в разные процессы и даже разные сетевые узлы. Поскольку проект учебный, чтобы не запутаться в собственных трусах, посмотрите на нечто генерирующее за вас скелет CRUD приложения sculptorgenerator.org или projects.spring.io/spring-roo . Там люди уже интегрировали множество технологий и кодогенератор сделает за вас почти всю работу. Дальше можете разобраться с сгенерированным проектом и либо продолжать изучать и использовать генератор приложений, либо править уже тот код и конфигурацию что получились и забыть про генератор
  • Где хранить базы данных для java приложения?

    @igor_suhorukov
    Зачем вам синхронизация файлами? Мне кажется вы не очень точно описали задачу.

    Вы хотите многопользовательскую распределенную систему из множества оконных приложений swing или SWT? Хотите чтобы сервер БД был выставлен в сеть и был доступ со множества приложений?
    Есть вариант запустить H2 как обычную базу данных с подключением по TCP с помощью jdbc драйвера.
    Есть возможность внедрить эту же БД в процесс вашего приложения и только этот экземпляр приложения будет иметь доступ к этой базе. В этом же варианте можно сделать прослойку из soap/rest сервисов или с помощью любого другого RPC между БД и интерфейсом приложения
  • Xороший софт для управления проектом + багтрекер + контроль версий?

    @igor_suhorukov
    Redmine отличный багтрекер, удобная wiki и интеграция с системами контроля версий из коробки. Есть плагин для блога, трекать время и планировать релизы. svn/git для контроля версий.

    Если не хочется плодить Ruby рантаймы разных версий и у комманды уже есть томкат, можно запаковать redmine с jruby в варник. В этом случае достаточно легко настраивается соединение с БД через jdbc драйвер. и администратора с навыками админства руби не надо искать)

    Если есть желание прятать от внешнего заказчика часть тикетов и при этом дать ему доступ к багтрекеру проекта, то в этом случае лучше использовать Jira

    Как систему continuous integration можно использовать Jenkins или Cruise control. Cruise control прийдется админить через правку xml конфигов ручками, у Jenkins админский есть веб гуй. Cruise control был достаточно гибкий проект с огромным колличеством плагинов, но уже год не обновляется