你用什么来进行网站开发以及为什么你认为它会发生变化?

时间:2008-10-17 22:32:21

标签: architecture frameworks

这是我的新项目:一个开放的画布,就在我面前。几天后,我将开始编写一个大型Web应用程序。它将从很少的模块开始,只有我自己作为开发人员和工程师,但希望它会成长和发展。

尽管我是一名活跃的Java开发人员,但自从我上次从头开始创建Web应用程序以来已经有一段时间了。当时,Struts和J2EE是可行的方法,但我看到了很多新的框架,每天都在增加新的库。

我在这里要求的是您的建议:您目前在Web开发中使用了什么,为什么您认为它是相关的,如果您在开始新项目时选择相同的工具。一切都很重要:从UI上的提示到后端。常见的陷阱,模式,你能想到的一切都可能是相关的。

我是一名Java开发人员,我自然倾向于使用与Java相关的技术(J2SE,J2EE,Groovy,Grails,JRuby,Jython,JWhatever等等)来做所有事情,但欢迎来到发布您使用的任何内容,与Java有关。

我的目标是建立一个人们正在做的事情以及为什么他们要做的事情来帮助我评估我应该走哪条路,哪些不应该 - 以及为什么。毕竟,你每天都有这样的自由决定。

提前致谢!

14 个答案:

答案 0 :(得分:7)

我使用Django。我的主要原因是自动管理生成。这意味着我创建模型对象,Django工具为我生成SQL DDL - 我将其应用于我的数据库,Django有一个完全生成的Adminstration网站供我对该数据执行CRUD操作。它根据类型,搜索等选择了良好的控件。如果我想调整管理员,我可以创建这样的类。

Django还有很多其他好处(简单的模板语言,使用python,易于托管等),但管理员是我在RoR上选择它的原因。

答案 1 :(得分:3)

我最近一直在使用TurboGears而且非常喜欢它。它与Django和Ruby On Rails竞争快速开发,但具有更灵活的后端。也就是说,它更像是一系列最佳组件,它们可以比单个整体框架更好地协同工作。如果需要,您可以轻松地交换对象关系映射器,或者将页面模板语言替换为其他内容,而无需重写整个应用程序。

真正的“你一直都在哪里?”我花了大约两分钟在表格中添加AJAX autocomplete field的时刻来了。我必须编写一个函数来回答AJAX请求并添加一个调用该函数的新字段,并且它第一次完美地工作。我一直想玩AJAX,但有点吓人,我的第一次体验也不容易。

它有20 minute tutorial来制作功能性维基。即使你认为你不会使用它,也要阅读或观看它,看看这样的事情有多容易。

答案 2 :(得分:3)

我目前正在使用ASP.NET MVC,我将在未来几个月内将我的专业开发工作转移到它。在过去的十年里,我接触过许多语言和网络框架。 C#是一种非常成熟和强大的语言,asp.net mvc框架似乎只是点击了我。我将继续使用jquery作为我的主要JavaScript库。我还将在业余时间继续使用python / django和其他解决方案。

我喜欢c#所以这可能是我选择asp.net mvc而不是其他解决方案的原因。

似乎MS终于找到了一些体面的东西(考虑到asp.net网络形式的混乱......相当壮举)

答案 3 :(得分:2)

我觉得Google App Engine非常舒服(Python作为服务器语言,Google Datastore作为db,许多现成的对象,例如memcache,用户API等)。

答案 4 :(得分:2)

我是ColdFusion的粉丝,它建立在Java之上,但具有更多的RAD / Agile焦点。有来自Adobe的参考实现,但也有三种可用的CFML语言的开源实现。

ColdFusion特别擅长成为“胶水”技术,使用任何JDBC数据源提供对Flash / ActionScript服务,Java集成,.Net集成,Web服务和SQL数据库集成的访问。

答案 5 :(得分:2)

我使用Ramaze,一个漂亮的Ruby Web框架。与M4DBI结合,一个构建在Ruby DBI之上的Ruby ORM。对于JS工作,尽可能jQuery(我避免像瘟疫一样的普通JS!)。 PostgreSQL是我选择的数据库。

我有使用Rails,mod_ruby,JDBC,ODBC,PHP和“普通”站点(HTML,CSS,JS)的经验,但我对上面列出的Web应用程序堆栈软件非常满意。

我相信Ramaze可以在JRuby下运行。

答案 6 :(得分:2)

您是在谈论“网站”还是更富有的后台应用程序(许多控件和字段以及复杂的工作流程)?

如果你正在谈论一个网站,一些更面向内容的东西,并且你想坚持使用Java,我会投票给Stripes - 它在所有(好的,至少是大多数)荣耀中包含HTTP,它不在你的方式,非常灵活。我们在Stripes上编写了一个非常好的框架,利用了JSP和JSP标记文件。我们可以很快淘汰屏幕。

如果您考虑到更复杂的应用程序,请考虑其中一个组件框架。 Wicket非常受欢迎,但是JSF有很多工具和小部件,并且与Seam一起工作,这得到了好评如潮。

答案 7 :(得分:2)

如果我从头开始,我仍然会环顾我正在与之合作的团队,看看他们知道什么。团队中没有人知道的平台是错误的平台。对于生产工作,坚持你所知道的,除非你迫切需要改变。

如果您决定学习新东西,我建议使用Ruby on Rails。在短短几年内,它已经成为比较其他系统的主要里程碑之一:“我使用xyz,它就像rails除了......”仅此一点就说明了它对Web开发社区的影响。 Ruby为您提供了功能强大的服务器端脚本语言,而Rail可以快速开发高质量的应用程序。

答案 8 :(得分:1)

如果您想要简洁明了,请不要使用Rails,请使用Ramaze

答案 9 :(得分:1)

Stripes是一个非常棒的框架,因为它可以让您快速,轻松地构建应用程序,而无需维护配置文件。通常,您创建一个操作bean(一个简单的Java类)来完成工作,并创建一个JSP来显示结果。您可以使用注释添加验证。您可以获得最常见类型的内置类型转换,并且可以轻松编写自己的类型转换器。拦截器为您提供了解决横切关注问题的简单方法。简而言之,我发现它是最简单,最直观,最一致,最强大和最灵活的框架之一。

对于剩下的筹码,这取决于你。使用Stripes可以轻松集成Spring,Hibernate,JPA,AJAX,安全性,单元测试等。如果您想查看一些演示所有这些内容的示例代码,请获取code bundleStripes book并打开index.html文件以获取所有示例的列表。这样,您就可以了解Stripes应用程序的外观。

祝你项目好运!

答案 10 :(得分:1)

Grails(http://grails.org)可能是当今最有趣的新Web开发环境。它建立在以下基础之上:

弹簧
  Groovy的
  SiteMesh的
  休眠
  石英

它也可以通过插件扩展

http://grails.org/Plugins

您可以观看一些截屏视频,了解其功能。

http://grails.org/Grails+Screencasts

对我来说,一个非常吸引人的事情是Grails可以很容易地集成到现有的Java / JSP项目中。没有必要从头开始重写项目。

如果您没有任何遗留代码或者Java不是您的日常工作,我认为Ruby on Rails将是一个很好的选择。

最后,我喜欢能够将Grails项目部署到Tomcat,WebSphere,Glassfish等应用服务器的想法。这些系统非常可靠,并且可以很好地扩展。

答案 11 :(得分:1)

我考虑过大家在这里提出的大多数选择:Ruby on Rails,Grails上的Groovy,Python / Django以及Java中的Spring MVC框架。我最终选择了Ruby on Rails。

为什么呢?首先,我需要能够快速且灵活地开发功能。这并不代表Java的利益。其次,我需要开发一个网站而不是后台应用程序。因此UI不需要非常复杂。一个简单的CRUD应用程序包装数据库并在浏览器上绘制它就足够了。这决定性地排除了Java。

所以我留下了动态语言框架。我试过Groovy。由于我不需要与Java的互操作性,因此排除了有利于它的优点(是的,我知道JRuby是可互操作的,但Groovy仍然有'{}')。在Groovy中对原型进行原型设计之后,我注意到堆栈跟踪对于调试并不总是很有启发性,并且与我的Rails原型相比,性能很慢。这消除了Groovy。

考虑使用Python / Django,但我注意到将其他人带到船上将会更加困难,因为RoR中的书籍数量庞大>>的Python / Django的。也许我可以进一步考虑Python / Django,但现在是时候做出决定了,我选择了RoR。

答案 12 :(得分:0)

用于java开发,Eclipse或Net beans; 对于html / css / js netbeans以及有时Dreamweaver检查浏览器对属性的支持; 对于xml / xslt / xsi Altova xml间谍; 对于PNG文件Adobe烟花; 适用于所有通用文本编辑GVIM。不要忘记'Firebug'和'IE开发人员工具栏'。

为什么他们摇滚? java,tracability和WYSIWYG经验的代码完成使他们为我打勾。明天如果有一个新工具出来并且学习曲线较短,我就不会害羞!

答案 13 :(得分:0)

lift ,因为这是一个在Scala中编码的机会