Платформа является осуществленным механизмом управления версиями, наиболее очень нуждался в функции Java?

Итак, я прошел через это, полностью удалив Python, что я неохотно делал, а затем переустановил Python 2. Мне пришлось обновить мой путь и открыть новую оболочку, чтобы он увидел новую установку Python 2 и все стало на свои места. Сейчас я использую pyenv для своего проекта Python 3, и это мечта.

8
задан Dan 2 March 2009 в 14:50
поделиться

5 ответов

Посмотрите на OSGi - он имеет дело с управлением версиями и управлением пакетами (банки) очень приятно.

ТАКЖЕ: Eclipse (который создается сверху OSGi) имеет некоторые относительно новые Инструменты API, которые могут помочь Вам сравнить свой API с предыдущей базовой линией и определить, как соответственно выразить следующий номер версии Ваших пакетов.

Общая схема управления версиями затмения:

v.m.n.q

где

v: высокоуровневая версия - изменения здесь представляют обычно повреждающиеся изменения в API

m: существенные изменения - новая функциональность, новый API

n: незначительные изменения - тот же API, закулисные изменения

q: спецификатор - полезный для маркировки сборок, альфы/беты, и т.д.

OSGi указывает зависимости от версии с помощью диапазонов. Например,

Require-Bundle: com.javadude.foo;bundle-version="[1.2.0,2.0.0)"

в Вашем MANIFEST.MF указывает, что пакет требует версии 1.2.0 или позже пакета com.javadude.foo, через (но не включая) версия 2.0.0.

Можно также указать зависимости на уровне пакета вместо этого.

4
ответ дан 5 December 2019 в 19:03
поделиться

Я также использовал Java больше десятилетия, но я должен сказать, что не нашел много проблем ада JAR вообще (даже использующий все сторонние инструменты, которые Вы упоминаете)! Я нашел Maven чтобы быть ужасным инструментом, так создайте все с ant.

В нашей компании у нас есть сделанное на заказ разрешение зависимости ant задача на основе простого (маленького) файла зависимости для каждого проекта, вместе с определением каждого проекта как любой app или a lib (необходимо только когда-либо зависеть от a lib; никогда app). Это работает просто великолепно.

Мы также имеем ant задачи изменить наше затмение .classpath и ИДЕЯ .iml файлы для генерации графов зависимостей для наших IDE.

5
ответ дан 5 December 2019 в 19:03
поделиться

Преимущество, которое.NET имеет по Java, состоит в том, что библиотеки связываются более тесно с ОС. То, что библиотеки платформы, если они установлены, легко расположено в GAC, действительно упрощает вещи, но Вы также в значительной степени ограничены Windows. Лучшее сравнение было бы Моно, но у меня нет опыта там.

Управление конфигурацией, по крайней мере, мне, всегда было большой болью разработки программного обеспечения. Чем больше Вы пытаетесь использовать в своих интересах существующий код, тем хуже это кажется для становления. Сама проблема не уникальна для Java, но быстрого увеличения версий, количество времени, которым платформа была вокруг, и количество поддерживаемых платформ, действительно кажется, делает ее хуже. Я просто проверил, и у меня есть 3 версии JRE на моем поле прямо сейчас - и я даже не активный Java-разработчик.

Относительно Вашего вопроса, я не уверен, является ли это самая нажимающая потребность функции. Лично, я хотел бы видеть некоторую лучшую поддержку веб-сервисов, особенно те, которые требуют заголовков аутентификации. В прошлый раз, когда я пытался заставить Java взаимодействовать с одним из моих веб-сервисов.NET, я почти оторвал волосы. Используя LINQ с C#/.Net, я могу также сказать, что это было бы довольно прохладным дополнением к Java возможно с большим количеством повышений эффективности, которые будут иметься.

0
ответ дан 5 December 2019 в 19:03
поделиться

Я столкнулся с этой проблемой на сайте, в котором я работал: созданный инструмент, чтобы пробежать файлы банки, живущие на веб-сервере и найти все вложенные копии файлов банки - и различных файлов с теми же именами (например: версии log4j.jar). Это была отвратительная путаница, включая одну ВОЙНУ, которая имела банку WebLogic в нем.

Не уверенный, каково решение.

Вещь: Java имеет материал для управления этим - штампованные файлы банки с версиями пакета. И особенно: webstart. Возможно, то, что необходимо, является некоторым classloader, который делает вещь webstart-типа.

Как насчет: в декларации JAR Вы указываете зависимости библиотеки, с помощью известных имен и версий. classloader - обеспеченный контейнером или временем выполнения - был бы ответственен за получение версий, которые Вы хотите.

Существует много систем (например: Знаток самостоятельно) для управления известными местами для загрузки библиотек с, а также штрейкбрехер и этажерка.

0
ответ дан 5 December 2019 в 19:03
поделиться

.NET поддерживает бок о бок блоки, таким образом, у Вас может быть несколько версий того же приложения вокруг. GAC как общий DLLs, но тем не менее можно зарегистрировать несколько версий того же блока в GAC, и другой блок может запросить определенное или большее - чем версия, если я помню хорошо. В JavaEE у Вас действительно есть несколько уровней загрузчика класса btw, и можно сделать некоторые приемы, моделирующие подобное управление версиями

0
ответ дан 5 December 2019 в 19:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: