我正在编写一个旨在桌面上运行的Java应用程序,它将使用Swing作为其UI.我熟悉Java Web Start,但听说它很麻烦且有问题.
有哪些工具可以更轻松地将Java应用程序部署到多个平台?我特别寻找免费提供的工具,或者至少可以免费使用开源项目的工具.
编辑:我应该澄清这是一个主要在后台运行的点对点应用程序,并且(可选)能够在Windows,Mac和Linux上自动启动.
编辑2:我应该进一步澄清,这个应用程序旨在在政府可能审查我们的网站的国家运作.因此,重要的是它可以作为独立文件分发,而不是必须从已知网站下载的内容.
我的要求相当简单,但我需要做很多这样的事情,所以我正在寻找一个强大的解决方案.
是否有一个很好的轻量级库,用于将URL分解为Java中的组件部分?我指的是主机名,查询字符串等.
按照这里的说明我有这个代码:
private static URI getBaseURI() {
return UriBuilder.fromUri("http://localhost/").port(9998).build();
}
public static final URI BASE_URI = getBaseURI();
protected static HttpServer startServer() throws IOException {
System.out.println("Starting grizzly...");
final ResourceConfig rc = new PackagesResourceConfig("amplify.api.resources");
return GrizzlyServerFactory.createHttpServer(BASE_URI, rc);
}
public static void main(final String[] args) throws IOException {
final HttpServer httpServer = startServer();
System.out.println(String.format("Jersey app started with WADL available at "
+ "%sapplication.wadl\nTry out %shelloworld\nHit enter to stop it...", BASE_URI, BASE_URI));
System.in.read();
httpServer.stop();
}
Run Code Online (Sandbox Code Playgroud)
接下来我想启用这里描述的JSON POJO支持,但问题是我想以编程方式而不是通过web.xml文件(我没有web.xml文件!)来完成.
如何修改上面的代码以启用JSON POJO映射功能?
如何让我的日志框架(目前是Logback)与Eclipse很好地配合?特别是,单击日志语句并将其带到生成它的行是很好的.
我知道Logback Eclipse插件,但显然它已经过时了,只适用于旧版本的Logback.
是否有一些其他日志框架可以更好地与Eclipse一起使用?我认为必须有一个很好的方法来做到这一点.
我有一个很大的代码库,我想重构包结构,以便大量交互的类位于同一个包中。
看来应该可以创建一个工具来查看类之间的交互,然后将那些交互频繁的类组合在一起。这些分组可能会建议一个良好的包层次结构。
存在这样的工具吗?(开源是首选)。
我一直在考虑创建一种非常适合创建DSL的语言,允许定义中缀,后缀,前缀或甚至由多个单词组成的函数.例如,您可以按如下方式定义中缀乘法运算符(其中已定义了乘法(X,Y)):
a * b => multiply(a,b)
Run Code Online (Sandbox Code Playgroud)
或后缀"平方"运算符:
a squared => a * a
Run Code Online (Sandbox Code Playgroud)
或者是C或Java风格的三元运算符,它包含两个散布着变量的关键字:
a ? b : c => if a==true then b else c
Run Code Online (Sandbox Code Playgroud)
显然,在这种语言中存在大量的歧义空间,但如果它是静态类型的(使用类型推断),那么大多数歧义可以被消除,而剩下的那些可以被认为是语法错误(通过添加括号来纠正适当).
有什么理由我没有看到这会使这个极其困难,不可能,或者只是一个简单的坏主意?
编辑:很多人都指出了可以做到这一点或类似事情的语言,但我实际上对如何实现自己的解析器的指针感兴趣,或者如果这样做我可能会遇到的问题.
syntax parsing programming-languages infix-notation postfix-notation
我有一堆数据(呼叫自动呼叫中心)关于一个人是否购买特定产品,1个购买,0个购买.
我想用这些数据来估算一个人购买特定产品的估计概率,但问题是我可能需要用相对较少的历史数据来做这件事,这些数据是关于有多少人购买/没有购买该产品.
一位朋友建议,在贝叶斯概率下,您可以通过提出"先验概率分布"来"帮助"您的概率估计,实际上这是在考虑实际数据之前有关您期望看到的信息.
所以我想要做的是创建一个类似这个签名(Java)的方法:
double estimateProbability(double[] priorProbabilities, int buyCount, int noBuyCount);
Run Code Online (Sandbox Code Playgroud)
priorProbabilities是我在之前的产品中看到的概率数组,该方法将用于为此概率创建先验分布.buyCount和noBuyCount是该产品特有的实际数据,我想根据数据和先前的数据估算用户购买的概率.这是从方法返回的双精度数.
我不需要数学上完美的解决方案,只需要比统一或平坦的先验更好的东西(即概率= buyCount /(buyCount + noBuyCount)).由于我对源代码比数学符号更熟悉,如果人们可以在他们的解释中使用代码,我会很感激.
我目前在我的Java项目中使用JSON(通过gzip压缩),我需要在磁盘上存储大量对象(数亿个).我每行有一个JSON对象,并禁止JSON对象中的换行符.通过这种方式,我可以逐行从磁盘流式传输数据,而无需一次读取整个文件.
事实证明,解析JSON代码(使用http://www.json.org/java/)比从磁盘上提取原始数据或解压缩它(我在运行中这样做)的开销要大得多.
理想情况下,我想要的是强类型序列化格式,我可以在其中指定"此对象字段是字符串列表"(例如),并且因为系统知道会发生什么,它可以快速反序列化.我也可以通过给别人"类型"来指定格式.
它还需要跨平台.我使用Java,但与使用PHP,Python和其他语言的人一起工作.
所以,回顾一下,它应该是:
有什么指针吗?
我想创建一个LinkedHashMap,它将根据可用内存限制其大小(即,当freeMemory + (maxMemory - allocatedMemory)达到某个阈值时).这将用作缓存的一种形式,可能使用"最近最少使用"作为缓存策略.
我担心的是,allocateMemory还包括(我假设)未垃圾收集的数据,因此将高估估计已用内存的数量.我担心这可能产生的意外后果.
例如,LinkedHashMap可能会继续删除项目,因为它认为没有足够的可用内存,但可用内存不会增加,因为这些已删除的项目不会立即被垃圾回收.
有没有人有这种类型的经验?我的顾虑值得关注吗?如果是这样,有人可以建议一个好的方法吗?
我应该补充一点,我也希望能够"锁定"缓存,基本上说"好吧,从现在开始不要因为内存使用问题而删除任何东西".
我正在通过 Play 框架使用 JPA。
我正在检查 User 对象是否被缓存,如果是,我检索它并合并()它以便我可以更新字段并稍后保存更改:
user = (User) Cache.get("user-auth-" + sessionAuthToken);
if (user != null) {
user = user.merge(); // I believe this is the same as EntityManager.merge()
}
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我收到以下错误:
PersistenceException occured :
org.hibernate.exception.ConstraintViolationException:
could not insert: [models.User]
...
Caused by: com.mysql.jdbc.exceptions.jdbc4.
MySQLIntegrityConstraintViolationException:
Duplicate entry '1235411688335416533' for key 'authToken'
Run Code Online (Sandbox Code Playgroud)
它似乎试图插入一个新用户,即使这个用户应该是,并且已经在数据库中。为什么要 merge() 这样做?
或者我可能完全以错误的方式处理这个问题 - 建议将不胜感激。
java ×9
eclipse ×1
grizzly ×1
jersey ×1
jpa ×1
logback ×1
parsing ×1
php ×1
probability ×1
refactoring ×1
statistics ×1
syntax ×1